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}'