zoukankan      html  css  js  c++  java
  • 解决/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

    • 一个是系统服务service, 像很多的 系统服务包括httpd.service等都是放在 systemd/system下的;

    • 另一个就是 系统的启动管理.包括原来的 /etc/inittab, runlevels 等 都是由 systemd/system/下的target 来管理的了.

    • target 被设计成层级结构,逐级包含和require. 比如: multi-user.target就类似于原来的 runlevel3 它包含 basic.target. 而graphical.target就类似于(analogous to)原来的runlevel5. 它又包含 multi-user.target.每个target都有对应的需求启动项,包含在对应的 *.target.wants(wants 就是对应的目标所需要的内容...)

    • 在每个target中, 的内容是: 规定了前提条件: requisite, 先于当前target 启动的服务Before=...,当前服务启动后, 然后还要启动的服务 After=... 

    [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.

    • wtmp acts as a historical utmp

    • btmp records failed login attempts

    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 true

    只能恢复第一个 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 FilesInteliCLS Client;C:Program FilesCommon FilesMicrosoft SharedWindows Live;C:Windowssystem32;C:Windows;C:WindowsSystem32Wbem;C:WindowsSystem32WindowsPowerShellv1.0;C:Program FilesWindows LiveShared;C:Program FilesIntelIntel(R) Management Engine ComponentsDAL;C:Program FilesIntelIntel(R) Management Engine ComponentsIPT;' (length=363)
      'SystemRoot' => string 'C:Windows' (length=10)
      'COMSPEC' => string 'C:Windowssystem32cmd.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:wampwwwHomeFooar' (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

  • 相关阅读:
    【c#.Net】类:面向对象
    【c#.Net】面试题库总结50题
    【c#.Net】C#面试题(.net开发人员必备)100题
    【C#.Net】方法和参数
    如何在Tomcat (6/7/8.0) 安装SSL证书
    ubuntu16.04安装jdk/mysql/tomcat (使用apt-get命令)
    java后台处理解析json字符串的两种方式
    web开发如何使用百度地图API(一)判断点是否在范围内
    ES6的let和var声明变量的区别
    web开发如何使用高德地图API(四)通过AMap.Marker自定义标点
  • 原文地址:https://www.cnblogs.com/bkylee/p/8340695.html
Copyright © 2011-2022 走看看