第八周作业

1、systemd查看日志文件有隐藏该如何处理?

 systemd将内核日志和应用日志默认情况保存在/run/log/journal中,系统重启后会清除,这里面的日志文件为二进制形式,不能直接用less等文本文件查看的方式查看内容。

$ journalctl

日志文件还有更详细的信息,使用下面这个参数 显示隐藏字段

journalctl   Query the journal.  查询日志。

--system        Show the system journal 查询系统内核日志。

--user            Show the user journal for the current user 查询用户应用日志。

-o或 --output=STRING来改变journal命令输出的模式,可选的模式有 (short, short-iso,short-precise, short-monotonic, verbose,export, json, json-pretty, json-sse, cat)

例如:journalctl  -o verbose

2、自己动手写一个systemd的配置文件, 让nginx服务可以开机启动

syscemctl命令:通过syscemctl管理系统服务。

- Control the systemd system and service manager

systemctl  [OPTIONS...]  COMMAND  [NAME...]

启动: ==>  systemctl  start  NAME.service

停止:  ==> systemctl  stop  NAME.service

重启:  ==>  systemctl  restart  NAME.service

状态:  ==>  systemctl  status  NAME.service

通过添加service unit file配置文件 (在/usr/lib/systemd/system)管理新服务(nginx)新建一个nginx服务的配置文件 vim nginx.service

[Unit]

Description=nginx web server

After=network.target remote-fs.target nss-lookup.target

[Service]

Type=forking

PIDFile=/usr/local/nginx/logs/nginx.pid

ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

ExecReload=/usr/local/nginx/sbin/nginx -s reload

ExecStop=/usr/local/nginx/sbin/nginx -s stop

[Install]

WantedBy=multi-user.target

配置文件有三部分组成 service unit file:

[Unit]:定义与Unit类型无关的通用选项;用于提供unit的描述信息、unit行为及依赖关系等;

[Service]:与特定类型相关的专用选项;此处为Service类型;

[Install]:定义由“systemctl  enable”以及"systemctl  disable“命令在实现服务启用或禁用时用到的一些选项;

Unit段的常用选项:

Description:描述信息; 意义性描述;

After:定义unit的启动次序;表示当前unit应该晚于哪些unit启动;其功能与Before相反;

Requies:依赖到的其它units;强依赖,被依赖的units无法激活时,当前unit即无法激活;

Wants:依赖到的其它units;弱依赖;

Conflicts:定义units间的冲突关系;

Service段的常用选项:

Type:用于定义影响ExecStart及相关参数的功能的unit进程启动类型;

类型:simple:forking:oneshot:dbus:notify:idle:

EnvironmentFile:环境配置文件;

ExecStart:指明启动unit要运行命令或脚本; 

ExecStartPre, ExecStartPost 启动前启动后执行的脚本;

ExecStop:指明停止unit要运行的命令或脚本;

Restart:重启;

Install段的常用选项:

Alias:别名:

RequiredBy:被哪些units所依赖;强依赖

WantedBy:被哪些units所依赖;

3、SIGHUP、SIGQUIT、SIGTERM、SIGINTERRUPT的区别

通过命令man 7 signal来查看每个信号的含义。

SIGHUP 控制终端关闭或控制进程退出时,终端会话内的子进程与控制进程的子进程都会收到这样的信号,系统对SIGHUP信号的默认处理是终止收到该信号的进程。所以若程序中没有捕捉该信号,当收到该信号时,进程就会退出。

SIGQUIT  和SIGINT类似, 但由QUIT字符(通常是Ctrl-\  )来控制. 进程在因收到SIGQUIT退出时会产生core文件, 类似于一个程序错误信号。

SIGTERM程序结束(terminate)信号, 与SIGKILL不同的是该信号可以被阻塞和处理。通常用来要求程序自己正常退出,shell命令kill缺省产生这个信号。如果进程终止不了,我们才会尝试SIGKILL,就是我们有时使用kill -9 pid来强行杀死进程。

SIGINTERRUPT  程序终止(interrupt)信号, 在用户键入INTR字符(通常是Ctrl-C)时发出,用于通知前台进程组终止进程。

4、用awk查看tcp连接处于TIMEOUT的连接个数

netstat -an |awk '/^tcp\>/ {if($NF=="TIMEOUT")sum++} END{print sum}'

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、systemd查看日志文件有隐藏该如何处理? systemd统一管理所有Unit的启动日志,包含内核日志和应用...
    卫清华阅读 245评论 0 0
  • muahao阅读 2,102评论 0 3
  • systemd攻略 转自http://www.jianshu.com/p/d5305104d03a或者这个http...
    x1596357阅读 2,938评论 0 3
  • systemd攻略 相关文档 arch 的 systemd 说明页面 (简体中文) fedora 的 system...
    muahao阅读 11,780评论 0 12
  • 转:http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial...
    right_33cb阅读 1,020评论 0 0