Linux使用systemd和awk入门

  • 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就表示最后一列。 所以要用 NFNF来取出网络连接状态,然后用==与"TIMEOUT"进行比较。如果相等就执行后面的sum++表示sum自增值,等于统计这一状态的连接数。
END{print sum} 表示处理完所有的行,执行打印sum的值,就是有多少TIMEOUT连接数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值