- 1、systemd查看日志文件有隐藏该如何处理
- 2、手动写一个systemd的配置文件, 让nginx服务可以开机启动
- 3、SIGHUP、SIGQUIT、SIGTERM、SIGINTERRUPT的区别
- 4、awk查看tcp连接处于TIMEOUT的连接个数
systemd查看日志文件有隐藏该如何处理
systemd: 系统启动和服务器守护进程管理器,负责在系统启动或运行时,激活系统资源,服务器进程和其它进程
systemd新特性:
系统引导时实现服务器并行启动
按需启动守护进程
自动化的服务依赖关系管理
同时采用socket式与D-Bus总线式激活服务
系统状态快照
配置文件:
/usr/lib/systemd/systemd:每个服务最主要的启动脚本设置,类似于之前的/etc/init.d/
/run/systemd/system:系统执行过程中所产生的服务脚本,比上面目录优先运行
/etc/systemd/system:管理员建立的执行脚本,类似于/etc/rc.d/rcN.d/Sxx类的功能,比上面目录优先运行
在CentOS7.X中,systemd统一管理着所有unit的启动日志,systemd-journald就是一个被systemd管理的进型日志管理服务,可以收集来自内核、系统早期启动阶段的日志、系统守护进程在启动和运行中的标准输出和错误信息,还有syslog的日志。该日志服务仅仅把日志集中保存在单一结构的日志文件/run/log中,由于日志是经过压缩和格式化的二进制数据,所以在查看和定位的时候很迅速,我们可以只用journalctl一条命令就能查看所有日志(内核日志和 应用日志)。
Unit类型:
Systemctl -t help 查看unit类型
Service unit:文件扩展名为.service,用于定义系统服务
Target unit:文件扩展名为.target,用于模拟实现运行级别
Device unit:.device,用于定义内核识别的设备
Mount unit:.mount,定义文件系统挂载点
Socket unit:.socket,用于标识进程间通信用的socket文件,也可在系统启动时,延迟启动服务,实现按需启动
Snapshot unit:.snapshot,管理系统快照
Swap unit:.swap,用于标识swap设备
Automount unit:.automount,文件系统的自动挂载点
Path unit: .path,用于定义文件系统中的一个文件或目录使用,常用于当文件系统变化时,延迟激活服务,如:spool目录
root@centos7 ~]#systemctl list-units |grep journa*
systemd-journal-flush.service loaded active exited Flush Journal to Persistent Storage
systemd-journald.service loaded active running Journal Service
systemd-journald.socket loaded active running Journal Socket
要看到日志journald守护程序收集,使用journalctl命令。
单独使用时,每一个日记帐分录是系统将寻呼机(通常内显示less ),供您浏览。 最旧的条目将在顶部:
root@centos7 ~]#journalctl
-- Logs begin at Mon 2019-04-01 18:52:54 +12, end at Tue 2019-04-16 17:33:45 +12
Apr 01 18:52:54 centos7 systemd-journal[102]: Runtime journal is using 8.0M (max
Apr 01 18:52:54 centos7 kernel: Initializing cgroup subsys cpuset
Apr 01 18:52:54 centos7 kernel: Initializing cgroup subsys cpu
Apr 01 18:52:54 centos7 kernel: Initializing cgroup subsys cpuacct
Apr 01 18:52:54 centos7 kernel: Linux version 3.10.0-957.el7.x86_64 (mockbuild@k
Apr 01 18:52:54 centos7 kernel: Command line: BOOT_IMAGE=/vmlinuz-3.10.0-957.el7
Apr 01 18:52:54 centos7 kernel: Disabled fast string operations
Apr 01 18:52:54 centos7 kernel: BIOS-e820: [mem 0x000000007feff000-0x000000007fe
Apr 01 18:52:54 centos7 kernel: BIOS-e820: [mem 0x000000007ff00000-0x000000007ff
对于journal的配置,我们可以参见配置文件:/etc/systemd/journald.conf,可以根据实际情况进行自定义,默认情况下并不会持久化保存日志,只会保留一个月的日志。
将有可能页和数据页来滚动,它可以是几万或几十万排长队,如果systemd已经在系统上很长一段时间。 这将显示日志数据库中有多少数据可用。
该格式将是熟悉的那些谁是用来标准syslog日志记录。 然而,这实际上收集来自多个来源的数据,比传统syslog实现有能力的。 它包括来自早期引导过程,内核,initrd和应用程序标准错误的日志。 这些都在期刊上可用。
可能会注意到,显示的所有时间戳都是本地时间。 这对于每个日志条目都可用,现在我们的本地时间在我们的系统上正确设置。 使用此新信息显示所有日志。
如果想显示UTC时间戳,可以使用–utc标志:
日志按时间过滤
[root@centos7 ~]#journalctl -utc
显示当前引导的日志
[root@centos7 ~]#journalctl -b
-- Logs begin at Mon 2019-04-01 18:52:54 +12, end at Tue 2019-04-16 17:35:07 +12
Apr 01 18:52:54 centos7 systemd-journal[102]: Runtime journal is using 8.0M (max
Apr 01 18:52:54 centos7 kernel: Initializing cgroup subsys cpuset
Apr 01 18:52:54 centos7 kernel: Initializing cgroup subsys cpu
Apr 01 18:52:54 centos7 kernel: Initializing cgroup subsys cpuacct
Apr 01 18:52:54 centos7 kernel: Linux version 3.10.0-957.el7.x86_64 (mockbuild@k
Apr 01 18:52:54 centos7 kernel: Command line: BOOT_IMAGE=/vmlinuz-3.10
手动写一个systemd的配置文件, 让nginx服务可以开机启动
-第一步安装nginx服务
由于yum会帮你都弄好,建议不用yum
-第二步创建自定义服务(/etc/init.d),针对你想启动的服务创建一个脚本,而这个脚本是有一定格式要求的
早期工程师喜欢用/etc/init.d,现在有service(可以临时的把服务启动或关闭),chkconfig --list nginx(可以查看某个服务什么模式1-7种模式一目了然,默认给2345on(因为2345用的多
[root@centos6 /etc/rc.d/init.d]#vim nginx
#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig: 345 85 15 关键的一行 (当把ngin加入到服务以后,默认是345是运行状态,其他的都i是off状态),s开头有个数字(85)k开头有个数字就是15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \ centos5上必须加这一行,centos6无所谓
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /etc/nginx/nginx.conf
# config: /etc/sysconfig/nginx
# pidfile: /var/run/nginx.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
-第四步给服务脚本执行权限
[root@centos6 /etc/rc.d/init.d]#chmod +x nginx
-第五步利用chkconfig命令
[root@centos6 /etc/rc.d/init.d]#chkconfig -add nginx
[root@centos6 /etc/rc.d/init.d]#chkconfig -list nginx
nginx 0:off 1:off 3:off 4:off 5:off 6:off
-第六步查看在不同模式启动文件夹下是否有nginx文件 有显示文件即为成功
[root@centos6 /etc/rc.d/init.d]#ls /etc/rc.d/rc5.d/ |grep nginx
SIGHUP、SIGQUIT、SIGTERM、SIGINTERRUPT的区别
kill命令:
向进程发送控制信号,以实现对进程管理,每个信号对应一个数字,信号名称以SIG开头(可省略),不区分大小写。
显示当前系统可用信号:kill -l,trap -l
常用信号:man 7 signal
Signal Value Action Comment
──────────────────────────────────────────────────────────────────────
SIGHUP 1 Term Hangup detected on controlling terminal or death of controlling process 信号,挂起正在控制的终端和死掉的进程
SIGINT 2 Term Interrupt from keyboard 键盘中断
SIGQUIT 3 Core Quit from keyboard 键盘退出
SIGILL 4 Core Illegal Instruction
SIGABRT 6 Core Abort signal from abort(3)
SIGFPE 8 Core Floating point exception
SIGKILL 9 Term Kill signal
SIGSEGV 11 Core Invalid memory reference
SIGPIPE 13 Term Broken pipe: write to pipe with no
readers
SIGALRM 14 Term Timer signal from alarm(2)
SIGTERM 15 Term Termination signal
SIGUSR1 30,10,16 Term User-defined signal 1
SIGUSR2 31,12,17 Term User-defined signal 2
SIGCHLD 20,17,18 Ign Child stopped or terminated
SIGCONT 19,18,25 Cont Continue if stopped
SIGSTOP 17,19,23 Stop Stop process
SIGTSTP 18,20,24 Stop Stop typed at terminal
SIGTTIN 21,21,26 Stop Terminal input for background process
SIGTTOU 22,22,27 Stop Terminal output for background process
1)SIGHUP: 无须关闭进程而让其重读配置文件
2)SIGINT: 中止当前正在运行的进程;相当于CTRL+c
3)SIGQUIT: 相当于ctrl+
9)SIGKILL: 强制杀死正在运行的进程
15)SIGTERM: 终止正在运行的进程
18)SIGCONT: 继续运行
19)SIGTOP: 后台休眠
SIGINTERRUPT: 程序终止(interrupt)信号, 在用户键入INTR字符(通常是Ctrl-C)时发出,用于通知前台进程组终止进程。
指定信号的方法:
(1)信号的数字表示: 1,2,9
(2)信号完整名称: SIGHUP
(3)信号简写名称: HUP
awk查看tcp连接处于TIMEOUT的连接个数
第一种
[root@centos6 /etc/rc.d/init.d]#netstat -ant |awk '/^tcp/{state[$NF]++}END{for(a in state){print a,state[a]}}'|grep TIMEOUT
TIMEOUT 1
第二种
[root@centos6 /etc/rc.d/init.d]#netstat -ant |awk '/^tcp/{if ($NF == "TIMEOUT")sum++}END{print $NF,sum}'
TIMEOUT 1
awk 是按行处理的文本处理程序 /^tcp/以tcp开头的行
N
F
=
=
"
T
I
M
E
O
U
T
"
这
个
条
件
中
NF=="TIMEOUT" 这个条件中
NF=="TIMEOUT"这个条件中NF表示每一行的最后一列,因为NF是一行最大的列数,如果一行有3列值,则NF为3,
N
F
就
表
示
最
后
一
列
。
所
以
要
用
NF就表示最后一列。 所以要用
NF就表示最后一列。所以要用NF来取出网络连接状态,然后用==与"TIMEOUT"进行比较。如果相等就执行后面的sum++表示sum自增值,等于统计这一状态的连接数。
END{print sum} 表示处理完所有的行,执行打印sum的值,就是有多少TIMEOUT连接数。