解決/var/log下沒有messages文件的問題?

fedora23和centos7+ 都是使用的 systemd 來代替sysv 管理系統啓動和服務了. 在systemd 中主要包含兩個方面的內容,

  • 當打開/etc/inittab 文件時, 會看到:
    inittab is no longer used,
    Adding configuration here will have no effect on system.
    systemd uses 'targets' instead of runlevels. By default, there are two main targets:
    multi-user.target: analogous to runlevel 3
    graphical.target: analogous to runlevel 5
    To view current default target, run: systemctl get-default
    To set a default target, run systemctl set-default TARGET.target
    php

  • 一個是系統服務service, 像不少的 系統服務包括httpd.service等都是放在 systemd/system下的;html

  • 另外一個就是 系統的啓動管理.包括原來的 /etc/inittab, runlevels 等 都是由 systemd/system/下的target 來管理的了.mysql

  • target 被設計成層級結構,逐級包含和require. 好比: multi-user.target就相似於原來的 runlevel3 它包含 basic.target. 而graphical.target就相似於(analogous to)原來的runlevel5. 它又包含 multi-user.target.每一個target都有對應的需求啓動項,包含在對應的 *.target.wants(wants 就是對應的目標所須要的內容...)linux

  • 在每一個target中, 的內容是: 規定了前提條件: requisite, 先於當前target 啓動的服務Before=...,當前服務啓動後, 而後還要啓動的服務 After=... sql

[foo@localhost system]$ ls *.wants  ## 查看各個目標須要的wants, 每一個wants下列出了須要的哪些服務. systemd就是這樣來管理系統啓動的
anaconda.target.wants:
anaconda-nm-config.service  anaconda-tmux@tty2.service

# basic.target.wants:
alsa-restore.service  alsa-state.service  fedora-autorelabel-mark.service  fedora-autorelabel.service  fedora-loadmodules.service

busnames.target.wants:
org.freedesktop.hostname1.busname  org.freedesktop.login1.busname    org.freedesktop.resolve1.busname
org.freedesktop.import1.busname    org.freedesktop.machine1.busname  org.freedesktop.systemd1.busname
org.freedesktop.locale1.busname    org.freedesktop.network1.busname  org.freedesktop.timedate1.busname

dbus.target.wants:

default.target.wants:

# graphic.target包含(requires multi-user.target, multi-user.target又requires basic.target)
graphical.target.wants:
systemd-update-utmp-runlevel.service

# multi-user.target須要的wants.
multi-user.target.wants:
dbus.service  plymouth-quit.service       systemd-ask-password-wall.path  systemd-update-utmp-runlevel.service
getty.target  plymouth-quit-wait.service  systemd-logind.service          systemd-user-sessions.service

在 markdown中, 若是有多個回車換行, 至少是能夠認識一個 換行的, 便可以顯示 一個空行的, 可是多個空行(回車換行)無效

在 顯示/過濾 符合 條件的 多個目錄時, 可使用 -d (--directory) 選項,將只顯示 目錄自己, 而不顯示內容. 這個將頗有用. show directroies themselves not their contents.

在 /usr/lib/systemd/system下, default.target 是一個指向 默認啓動的target的 軟連接. 這個就是供 systemd的管理工具 systemctl 來得到默認啓動 級別的 get-default.

在bash中, 要將多行字符串 重定向輸出到 文件中, 使用下面的格式

[foo@localhost ~]$ cat > 重定向文件名.txt   <<eof
> [daemon]
> autologinEnabled = true
> autologinUser = liveuser
> eof   (若是是在腳本中, 就沒有前面的大於符號)

可是在 /usr/lib/systemd/system 下的 basic.target.wants, multi-user.target.wants, graphical.target.wans中都沒有發現syslog, 它們裏面只有一些 須要的service服務. 並且在 /etc/rc5.d中也沒用 什麼 S20syslog 文件?

在 /usr/include/中是一些linux系統要使用的 頭文件. 其中一些 數據結構自己的 定義 放在 /usr/include/bits 目錄中,

  • 而 操做這些數據結構的同名文件 放在 /usr/include中,
  • 好比: 存儲當前登陸用戶信息的文件 有: /var/log/btmp 和 存儲以往登陸過的用戶的信息文件 /var/log/wtmp (這兩個文件是數據庫文件, 非ascii文件,不可讀) . 這兩個文件使用的 基本的數據結構就是 一個結構體 struct utmp() . 參考: http://blog.chinaunix.net/uid-25909722-id-2851379.html
  • 關於utmp這個結構體的具體定義是放在 /usr/include/bits/utmp.h文件中的.
  • 而關於結構體 utmp的操做的函數, 好比 getutmp, setutent等 是放在 /usr/include/ utmp.h文件中的.
  • 根據這個結構體的一些信息和操做函數, 就能夠 本身寫成 相似於 linux的 who命令的 用戶信息輸出的 自定義命令程序等..

關於utmp, wtmp, btmp?

  • utmp maintains a full accounting of the current status of the system, system boot time (used by uptime), recording user logins at which terminals, logouts, system events etc.thinkphp

  • wtmp acts as a historical utmp數據庫

  • btmp records failed login attemptsapache

The utmp file is not a text file, but rather a binary format which needs to be edited by specially crafted programs.

原來, 從fedora20開始, 就沒有 使用 /var/log/messages 了, 而是使用的 journalctrl 來代替 messages了, 參考: http://blog.163.com/shishihoule@126/blog/static/5729354720142204418292/

  • 因此 就沒有 syslogd, rsyslogd, ksyslogd, 如同上面所說的那樣, 在 /etc/rc5.d目錄中 也沒有 S20syslog 文件了.
  • 就是: 原來的 顯示messages 的命令 "cat /var/log/messages" 命令直接使用 一個單詞, journalctl 來顯示了,
  • 其餘的相關命令 使用 journalctl -f 遞增查看. 和 過濾 : journal | grep 'foo'


要保存 fedora的 gnome的 會話, 使得下一次啓動時也能 恢復本次的 窗口和狀態, 方法是: 使用 dconf-editor 但是化界面設置, 或者使用 命令:

gsettings set org.gnome.SessionManager auto-save-session truecentos

只能恢復第一個 workspace中的 內容 所以, 若是你想 下次開機時, 仍是有這些內容,
能夠把他們都放在第一個workspace中,數組


namespace 指的是所在的目錄,是位置
而use 是指的使用的類文件,是文件
控制器的類名應該是:Foo + Controller:FooController 而不僅是單單的class Foo. 你是繼承自Controller的,那天然你也應該是 xxxController才行。

關於apache中的module模塊的名稱

  1. 有三個地方使用到了模塊的名稱,其中只有在httpd.conf中的 # LoadModule rewrite_module LoadModule後面的模塊名稱使用的是 ModuleName_module 外, 其餘地方都是使用 的 mod_modulename, 好比:
LoadModule rewrite_module modules/mod_rewrite.so

httpd.conf中: <IfModule mod_rewrite> .... </IfModule>

thinkphp中的.htaccess 配置中:  <IfModule mod_rewrite.c>  ... <IfModule>

要實現/開啓 地址重寫, 除了 'URL_MODEL' => 2外, 還要 給 apache啓用 /開啓 LoadModule rewrite_module, 不然重寫地址不生效.

注意區分 apache 和 php的 插件機制的不一樣, apache叫 modules, 名稱是:xxx_module. 好比rewrite_module modules/mod_rewrite.so 而 php叫作擴展extensions. 名稱是: php_xxx, 好比 php_mysql, php_mysqli等等.

apache的模塊是放在 Apache 目錄的 modules文件夾中的, 模塊的路徑也是以 Apache目錄爲相對路徑的. 因此 LoadModule rewrite_module modules/mod_rewrite.so 的目錄就是直接從 modules開始寫起的.


通過實踐驗證, 確實是, URL_MODEL 既能夠放在應用配置文件中, 這時全部的模塊都使用相同的url模式, 也能夠放在 模塊配置文件中, 那麼就只有這一個模塊 使用 你配置的url模式.

要使用URL 模式爲重寫模式, 要求 .htaccess要和 入口文件index.php放在同一位置. 同一個目錄下才行. 固然 的, rewrite的做用就不 只是 省略入口文件

.htaccess文件 是用來 影響 你要設置的某個目錄的, 因此, 若是你要處理某個目錄, 不必定是 Application/目錄, 就要在對應的目錄下 建立 相應的 .htaccess文件, 這個.ht..文件能夠有多個


關於rewrite重寫的規則問題:

  1. 重寫規則中,不能以斜槓/ 開始, 默認的重寫只是對 http://servername/ 後面的內容才重寫, 對servername/ 老是不重寫無論的.
  2. 若是url_mode=2 只重寫斜槓的部分, 對問號後面的 query_string 無論.
也能夠本身寫 重寫規則, 不必定只是 那個 省略index.php的重寫規則 好比下面的規則就是 將 cool的訪問 重寫/重定向到bar的操做action

  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^Home/Foo/cool$ index.php/Home/Foo/bar [QSA,PT,L] 
  #  默認的重寫規則是:  RewriteRule  ^.*$  index.php/$1 [QSA,PT,L]

當訪問以下的url地址時, 
  http://localhost/Home/Foo/cool?val=3

得到的 dump($_SERVER) 的輸出:
  array
  'REDIRECT_STATUS' => string '200' (length=3)
  'HTTP_HOST' => string 'localhost' (length=9)
  'HTTP_USER_AGENT' => string 'Mozilla/5.0 (Windows NT 6.1; rv:38.0) Gecko/20100101 Firefox/38.0' (length=65)
  'HTTP_ACCEPT' => string 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' (length=63)
  'HTTP_ACCEPT_LANGUAGE' => string 'en-US,en;q=0.5' (length=14)
  'HTTP_ACCEPT_ENCODING' => string 'gzip, deflate' (length=13)
  'HTTP_COOKIE' => string 'PHPSESSID=ufujblmd3tnp9ch7lsao4ov594; pgv_pvi=8625812480; pgv_si=s4041340928' (length=76)
  'HTTP_CONNECTION' => string 'keep-alive' (length=10)
  'PATH' => string 'C:\Program Files\Intel\iCLS Client\;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Windows Live\Shared;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;' (length=363)
  'SystemRoot' => string 'C:\Windows' (length=10)
  'COMSPEC' => string 'C:\Windows\system32\cmd.exe' (length=27)
  'PATHEXT' => string '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC' (length=53)
  'WINDIR' => string 'C:\Windows' (length=10)
  'SERVER_SIGNATURE' => string '' (length=0)
  'SERVER_SOFTWARE' => string 'Apache/2.2.17 (Win32) PHP/5.3.5' (length=31)
  'SERVER_NAME' => string 'localhost' (length=9)
  'SERVER_ADDR' => string '127.0.0.1' (length=9)
  'SERVER_PORT' => string '80' (length=2)
  'REMOTE_ADDR' => string '127.0.0.1' (length=9)
  'DOCUMENT_ROOT' => string 'C:/wamp/www/' (length=12)
  'SERVER_ADMIN' => string 'admin@localhost' (length=15)
  'SCRIPT_FILENAME' => string 'C:/wamp/www/index.php' (length=21)
  'REMOTE_PORT' => string '53416' (length=5)
  'REDIRECT_QUERY_STRING' => string 'val=3' (length=5)
  'REDIRECT_URL' => string '/Home/Foo/cool' (length=14)
  'GATEWAY_INTERFACE' => string 'CGI/1.1' (length=7)
  'SERVER_PROTOCOL' => string 'HTTP/1.1' (length=8)
  'REQUEST_METHOD' => string 'GET' (length=3)
  'QUERY_STRING' => string 'val=3' (length=5)            // 不論是query,仍是 request等, 都沒有ing
  'REQUEST_URI' => string '/Home/Foo/cool?val=3' (length=20)  //  REQUEST_URI 是最真是/最直接的 請求地址, 就是跟瀏覽器的地址欄中的內容徹底同樣.
  'SCRIPT_NAME' => string '/index.php' (length=10)  // 會顯示 真實的 腳本名稱,在 servername後面的 腳本名稱,  如這裏的 /index.php
  'PATH_INFO' => string 'Foo/bar' (length=7)          // PATH_INFO 包含的是:  控制器/操做: Controller/Action
  'PATH_TRANSLATED' => string 'C:\wamp\www\Home\Foo\bar' (length=24)
  'PHP_SELF' => string '/index.php/Home/Foo/bar' (length=23)   是用來 和 REQUEST_URI 區分查詢字符串的, 是 REQUEST_URI去掉查詢字符串後的內容.
  'REQUEST_TIME' => int 1516797830

在 win中 , php的函數名和變量要區分大小寫? 而關鍵字和結構詞彙不區分大小寫嗎?

一般來講, 只有 變量(及其 變量數組的 下標) 是在win下 嚴格區分大小寫的. 而其餘都不分大小寫.
可是 , 在 linux下, 一切 都是區分 大小寫的 , 一切都是 case sensitive的.

因此 養成一個習慣, 不論是在 哪一種平臺下, 不論是win, 仍是 linux下, 都要養成 區分大小寫的習慣.

也就是 只有變量 纔會 區分大小寫. 而其餘任何的 關鍵字 如echo, 結構語法如if, If ELSe等, 常量等如__File__ 都不會區分大小寫.

=======================

<IfModule [!] module_file | module_name >... </IfModule> 格式中, ifmodule是指, 判斷所指定的 模塊 是否指定/是否 啓用/是否生效 來決定是否啓用中間的代碼段. 其中, 可使用 否認的 符號!, 後面的條件能夠用 編譯模塊時的文件名, 也能夠指定 模塊名稱, 因此, <IfModule mod_rewrite.c 或者 mod_rewrite 都是能夠的.

在linux下, httpd的 module 模塊插件, 是放在 /usr/lib/httpd/modules這個目錄下的, 配置文件中的 mod_路徑也是以 這個目錄下 爲相對路徑的: LoadModule rewrite_module modules/mod_rewrite.so

相關文章
相關標籤/搜索