宝安网站设计项目,做网站什么语言好,做网页用什么编程语言,建站自学RHCE8 资料整理 第五篇 系统管理第18章 进程管理18.1 进程介绍18.2 查看进程18.3 向进程发送信号18.4 进程优先级 第19章 日志19.1 rsyslog的配置19.2 查看日志 第20章 网络时间服务器20.1 时间同步必要性20.2 配置时间服务器20.3 配置客户端 第21章 计划任务21.1 at21.2 cront… RHCE8 资料整理 第五篇 系统管理第18章 进程管理18.1 进程介绍18.2 查看进程18.3 向进程发送信号18.4 进程优先级 第19章 日志19.1 rsyslog的配置19.2 查看日志 第20章 网络时间服务器20.1 时间同步必要性20.2 配置时间服务器20.3 配置客户端 第21章 计划任务21.1 at21.2 crontab21.3 anacron 第五篇 系统管理
第18章 进程管理
18.1 进程介绍
参考 https://blog.csdn.net/u010230019/article/details/132311926
18.2 查看进程
通过ps能够查看进程信息不加选项的ps显示当前终端的进程
[rootserver ~]# psPID TTY TIME CMD42301 pts/0 00:00:00 bash42351 pts/0 00:00:00 ps关于ps详细内容查看 https://blog.csdn.net/u010230019/article/details/132301168
通过pgrep [-f] xxx能够查看某个进程的PID
[rootserver ~]# pgrep sshd
899
42289
42291
42293
42312也可以通过pidof xxx查看PID
[rootserver ~]# pidof sshd
42312 42293 42291 42289 899pgrep会把进程CMD中含有sshd的进程的PID全部找出来而pidof找的是CMD为sshd的
ps查看的是执行命令的一瞬间的情况而想要动态查看进程信息的可以使用top命令默认3秒刷新一次可以通过-d来指定刷新时间 详细参考https://blog.csdn.net/u010230019/article/details/132301168
top - 16:47:00 up 14 days, 22:56, 1 user, load average: 0.00, 0.00, 0.00
Tasks: 299 total, 1 running, 298 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.1 us, 0.2 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 1748.7 total, 178.4 free, 897.0 used, 673.3 buff/cache
MiB Swap: 4096.0 total, 4096.0 free, 0.0 used. 656.1 avail MemPID USER PR NI VIRT RES SHR S %CPU %MEM TIME COMMAND772 root 20 0 456396 11304 7496 S 0.2 0.6 24:42.64 vmtoolsd1344 gdm 20 0 3449740 177048 101844 S 0.2 9.9 8:28.06 gnome-shell42252 root 20 0 0 0 0 I 0.2 0.0 0:00.03 kworker/u256:0-events_unbound42373 root 20 0 0 0 0 I 0.2 0.0 0:00.24 kworker/1:0-mpt_poll_042395 root 20 0 226152 4488 3508 R 0.2 0.3 0:00.03 top1 root 20 0 170640 14660 9460 S 0.0 0.8 0:15.04 systemd2 root 20 0 0 0 0 S 0.0 0.0 0:01.84 kthreadd18.3 向进程发送信号
通过kill -l查看所有信号
[rootserver ~]# kill -l1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN1 36) SIGRTMIN2 37) SIGRTMIN3
38) SIGRTMIN4 39) SIGRTMIN5 40) SIGRTMIN6 41) SIGRTMIN7 42) SIGRTMIN8
43) SIGRTMIN9 44) SIGRTMIN10 45) SIGRTMIN11 46) SIGRTMIN12 47) SIGRTMIN13
48) SIGRTMIN14 49) SIGRTMIN15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX常用信号有
15以正常的结束进程来终止该进程。由于是正常的终止 所以后续的动作会将他完成。不过如果该进程已经发生问题就是无法使用正常的方法终止时 输入这个 signal 也是没有用的。9代表强制中断一个进程的进行如果该进程进行到一半 那么尚未完成的部分可能会有『半产品』产生类似 vim 会有 .filename.swp 保留下来。2相当于用键盘输入 [ctrl]-c 来中断一个进程的进行1启动被终止的进程可让该 PID 重新读取自己的配置文件类似重新启动
通过kill -n PID可以向进程发送信号通过killall -n processname可以向所有processname发送信号
18.4 进程优先级
系统中所有的进程都要消耗CPU资源CPU会为每个进程分配一个时间片轮到某个进程时CPU会处理这个进程的请求时间片到期则会把进程暂停放回队列等待下一轮时间片。在同一颗CPU上如果运行太多的程序就会导致CPU资源不足可以调整进程的优先级让指定进程获取更多的资源更优先的去执行。
进程的优先级由两个值决定优先顺序(priority)和优先级(niceness)。其中优先顺序由内核对它进行动态更改我们不需要做太多干预。对用户而言只需要修改nice值nice值范围为-20~19nice值越小进程就越先执行。
多个进程如果运行在不同的CPU上是互不干扰的不会发生资源抢占情况。只有运行在同一颗CPU上才会发生资源抢占情况。
查看CPU情况命令
[rootserver ~]# lscpu
Architecture: x86_64CPU op-mode(s): 32-bit, 64-bitAddress sizes: 43 bits physical, 48 bits virtualByte Order: Little Endian
CPU(s): 2On-line CPU(s) list: 0,1
...调整优先级示例 可以看到有两颗CPU一颗CPU有两个核则被认为是两颗CPU编号分别是0和1。现在关闭1号CPU命令如下
[rootserver ~]# cat /sys/devices/system/cpu/cpu1/online
1
[rootserver ~]# echo 0 /sys/devices/system/cpu/cpu1/online
[rootserver ~]# cat /sys/devices/system/cpu/cpu1/online
0
[rootserver ~]# lscpu
Architecture: x86_64CPU op-mode(s): 32-bit, 64-bitAddress sizes: 43 bits physical, 48 bits virtualByte Order: Little Endian
CPU(s): 2On-line CPU(s) list: 0Off-line CPU(s) list: 1可以看到1号CPU已经离线/sys/devices/system/cpu/cpu1/online中的值如果是0则表示CPU离线1则表示在线
[rootserver ~]# cat /dev/zero /dev/null
[1] 42453
[rootserver ~]# cat /dev/zero /dev/null
[2] 42454
[rootserver ~]# top -d 5PID USER PR NI VIRT RES SHR S %CPU %MEM TIME COMMAND42453 root 20 0 221096 1048 964 R 49.6 0.1 0:16.22 cat42454 root 20 0 221096 1024 940 R 49.4 0.1 0:14.75 cat可以看到两个cat进程消耗的CPU是差不多的因为他们的nice值相同可以平等的消耗CPU资源下面使用renice修改进程的nice值改为-10如下
[rootserver ~]# renice -n -10 42453
42453 (process ID) old priority 0, new priority -10
[rootserver ~]# top -d 5PID USER PR NI VIRT RES SHR S %CPU %MEM TIME COMMAND42453 root 10 -10 221096 1048 964 R 89.5 0.1 1:39.67 cat42454 root 20 0 221096 1024 940 R 9.7 0.1 1:29.11 cat
[rootserver ~]# killall -9 cat可以看到42453比42454占用了更多的CPU资源nice值越小可以获得更多的CPU资源
前面是对运行中的进程调整优先级也可以直接以某个特定的nice值启动进程
nice -n 10 cat /dev/zero /dev/null 开启1号CPU
第19章 日志
详细参考 https://blog.csdn.net/u010230019/article/details/127772295 https://blog.csdn.net/u010230019/article/details/132359825
在REHL8/CentOS8中日志由rsyslogd服务管理的不同类别的日志由/etc/rsyslog.conf决定保存在具体的文件中 /etc/rsyslog.conf定义规则格式
日志类别.日志基本标准线 文件日志类别
相对序号服务类别说明0kern(kernel)就是核心(kernel)产生的讯息大部分都是硬件侦测以及核心功能的启用1user在用户层级所产生的信息例如后续会介绍到的用户使用2mail只要与邮件收发有关的讯息记录都属于这个3daemon主要是系统的服务所产生的信息例如systemd就是这个有关的讯息4auth主要与认证/授权有关的机制例如login,ssh,su等需要账号/密码的咚咚5syslog就是由syslog相关协议产生的信息其实就是rsyslogd这支程序本身产生的信息啊6lpr亦即是打印相关的讯息啊7news与新闻组服务器有关的东西8uucp全名为Unix to Unix Copy Protocol早期用于unix系统间的程序数据交换9cron就是例行性工作排程cron/at等产生讯息记录的地方10authpriv与auth类似但记录较多账号私人的信息包括pam模块的运作等11ftp与FTP通讯协议有关的讯息输出16~23local0~local7保留给本机用户使用的一些登录文件讯息较常与终端机互动。
日志级别
等级数值等级名称说明none不需登录等级忽略掉某些服务的信息7debug用来 debug (除错) 时产生的讯息数据6info仅是一些基本的讯息说明而已5notice虽然是正常信息但比 info 还需要被注意到的一些信息内容4warning(warn)警示的讯息可能有问题但是还不至于影响到某个 daemon 运作的信息基本上info, notice, warn 这三个讯息都是在告知一些基本信息而已应该还不至于造成一些系统运作困扰3err(error)一些重大的错误讯息例如配置文件的某些设定值造成该服务服法启动的信息说明 通常藉由 err 的错误告知应该可以了解到该服务无法启动的问题呢2crit比 error 还要严重的错误信息这个 crit 是临界点 (critical) 的缩写这个错误已经很严重了喔1alert警告警告已经很有问题的等级比 crit 还要严重0emerg(panic)疼痛等级意指系统已经几乎要当机的状态 很严重的错误信息了。通常大概只有硬件出问题导致整个核心无法顺利运作就会出现这样的等级的讯息吧
19.1 rsyslog的配置
*.info;mail.none;authpriv.none;cron.none /var/log/messages# The authpriv file has restricted access.
authpriv.* /var/log/secure# Log all the mail messages in one place.
mail.* -/var/log/maillog# Log cron stuff
cron.* /var/log/cron# Everybody gets emergency messages
*.emerg :omusrmsg:*# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler# Save boot messages also to boot.log
local7.* /var/log/boot.log*.info;mail.none;authpriv.none;cron.none /var/log/messages除了mailauthpriv和cron的所有info及以上的讯息都记录在/var/log/messages中
模拟产生一个mail日志级别为debug
[rootserver ~]# logger -p mail.debug 1111
[rootserver ~]# tail -1 /var/log/maillog
Nov 9 17:42:38 server root[42476]: 111119.2 查看日志
不同的日志记录在不同的日志文件中参考 https://blog.csdn.net/u010230019/article/details/127772295 查看不同的日志信息
查看系统的引导日志可以查看/var/log.boot.log查看通过ssh,ftp等登录系统或尝试登录系统的用户可以查看/var/log/secure邮件相关日志可以查看/var/log/maillog查看安装或卸载了哪些包可以查看/var/log/dnf.log(REHL)
还可以通过journalctl查看系统的所有日志格式
journalctl [OPTIONS...] [MATCHES...]
-f : 持续输出
-p 级别查看指定级别日志[rootserver ~]# journalctl -p crit
Oct 25 17:50:22 server.rhce.cc kernel: Warning: Unmaintained hardware is detected: e1000:100F:8086 0000:02:00.0
Oct 25 17:50:23 server.rhce.cc kernel: Warning: Unmaintained hardware is detected: e1000:100F:8086 0000:02:03.0第20章 网络时间服务器
20.1 时间同步必要性
大部分集群服务器都要求时间必须保持一致否则会提示警告信息。
20.2 配置时间服务器
这里主要使用chrony进行配置时间服务器
主机ip类型node-140192.168.17.140时间服务器node-138192.168.17.138客户端
启动服务
systemctl start chronyd
systemctl status chronyd
systemctl enable chronyd指定时间服务器使用的上层时间服务器编辑/etc/chrony.conf
[rootserver ~]# grep pool /etc/chrony.conf
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (https://www.pool.ntp.org/join.html).
pool 127.127.1.0 iburstpool后面指定上层时间服务器由于我们这里把node-140作为时间服务器修改pool 2.rhel.pool.ntp.org iburst为pool 127.127.1.0 iburst即上层时间服务器设置为本地时钟的IP:127.127.1.0
允许指定的客户端访问
[rootserver ~]# grep allow /etc/chrony.conf
allow 192.168.17.0/24如果允许所有客户段都能访问则可以设置allow 0/0或allow all
修改local statum
[rootserver ~]# grep local /etc/chrony.conf
# Allow NTP client access from local network.
local stratum 10表示即使服务器本身没有和时间服务器保持时间同步也可以对外提供时间服务
重启chronyd服务
systemctl restart chronydchrony使用的是UDP的123和323端口所以查看端口
[rootserver ~]# ss -nltpu|grep chronyd
udp UNCONN 0 0 0.0.0.0:123 0.0.0.0:* users:((chronyd,pid42637,fd7))
udp UNCONN 0 0 127.0.0.1:323 0.0.0.0:* users:((chronyd,pid42637,fd5))
udp UNCONN 0 0 [::1]:323 [::]:* users:((chronyd,pid42637,fd6))如果开启了防火墙则需要把这两个端口开放如下
[rootserver ~]# firewall-cmd --add-port123/udp --permanent
success
[rootserver ~]# firewall-cmd --add-port323/udp --permanent
success
[rootserver ~]# firewall-cmd --reload
success20.3 配置客户端
把node-138设置为时间服务器客户端编辑/etc/chrony.conf修改如下
[rootnode-138 ~]# egrep -v ^$|^# /etc/chrony.conf
server 192.168.17.140 iburst
driftfile /var/lib/chrony/drift
makestep 200 3
rtcsync
logdir /var/log/chrony同步时间
[rootnode-138 ~]# date;ssh node-140 date
Thu Nov 9 11:16:23 CST 2023
Thu Nov 9 06:19:33 PM CST 2023
[rootnode-138 ~]# systemctl restart chronyd
[rootnode-138 ~]# date;ssh node-140 date
Thu Nov 9 11:16:42 CST 2023
Thu Nov 9 06:19:52 PM CST 2023
[rootnode-138 ~]# date;ssh node-140 date
Thu Nov 9 18:19:54 CST 2023
Thu Nov 9 06:19:54 PM CST 2023可以看到时间并不是一下同步的而是逐渐同步的为什么呢 这还需要从/etc/chrony.conf的makestep选项说起makestp那行格式如下
makestep 阈值 limit客户端向时间服务器同步时间有两种方式step和slew。
step跳跃着更新时间如时间从1点直接跳到7点slew平滑着移动时间晶体芯片跳动的会快一些好比秒针的转速“快进”了一样
如果客户端和服务器时间相差较多则通过step的方式更新时间如果相差不多则通过slew更新时间。那么时间相差多与不多的标准又是什么呢 这就要看时间差是否超过makestep后面的阈值了。以makestep 10 3为例如果相差10秒以上就认为时间相差较多则前3次通过step方式更新时间有些程序会因为时间跳动带来问题。如果是10秒以内则会通过slew缓慢平滑更新时间。
可以通过chronyc -n sources -v查看现在的同步状况
[rootnode-138 ~]# chronyc -n sources -v
210 Number of sources 1.-- Source mode ^ server, peer, # local clock./ .- Source state * current synced, combined , - not combined,
| / ? unreachable, x time may be in error, ~ time too variable.
|| .- xxxx [ yyyy ] /- zzzz
|| Reachability register (octal) -. | xxxx adjusted offset,
|| Log2(Polling interval) --. | | yyyy measured offset,
|| \ | | zzzz estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample^* 192.168.17.140 10 6 377 64 33us[ 70us] /- 396us可以看到node-138是向node-140进行时间同步的
第21章 计划任务
详细参考 https://blog.csdn.net/u010230019/article/details/132290764
21.1 at
使用at执行一次性计划任务格式
at 时间点 【按Enter】输入要执行的命令
Ctrl D 提交atq job #查询
at -c job #详细查询具体内容一般配合 tail -3 使用
atrm job #删除[rootnode-138 ~]# at now1minutes
at echo 123
at EOT
job 12 at Thu Nov 9 18:46:00 2023
[rootnode-138 ~]# atq
9 Wed Feb 14 01:00:00 2024 a root
10 Wed Feb 14 01:00:00 2024 a root
12 Thu Nov 9 18:46:00 2023 a root21.2 crontab
如果周期性执行计划任务则需要使用crontab
crontab -e [-u xxx] #[为其他用户]创建计划任务
crontab -l [-u xxx] #[为其他用户]查询计划任务
crontab -r #删除详细查询 https://blog.csdn.net/u010230019/article/details/132290764
[rootstudy ~]# cat /etc/crontab
SHELL/bin/bash 使用哪种 shell 接口
PATH/sbin:/bin:/usr/sbin:/usr/bin 执行文件搜寻路径
MAILTOroot 若有额外 STDOUT以 email 将数据送给谁
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed/etc/cron.allow 将可以使用 crontab 的账号写入其中若不在这个文件内的使用者则不可使用 crontab/etc/cron.deny 将不可以使用 crontab 的账号写入其中若未记录到这个文件当中的使用者就可以使用 crontab
同时存在时allow生效
可以直接将指令放到 /etc/cron.hourly/ 让系统每小时定时执行之外在 /etc/ 底下其实还有 /etc/cron.daily/, /etc/cron.weekly/, /etc/cron.monthly/那三个目录是代表每日、每周、每月各执行一次的意思
21.3 anacron
anacron 并不是用来取代 crontab 的anacron 存在的目的就在于我们上头提到的在处理非 24 小时一直启动的 Linux 系统的 crontab 的执行 以及因为某些原因导致的超过时间而没有被执行的排程工作。
其实 anacron 也是每个小时被 crond 执行一次然后 anacron 再去检测相关的排程任务有没有被执行如果有超过期限的工作在 就执行该排程任务执行完毕或无须执行任何排程时anacron 就停止了。
关于详细内容查看上面连接