Linux-系统管理的进程管理和服务管理
目录
1️⃣后台管理
2️⃣结束Linux的进程
3️⃣负载(怎么衡量负载高低)
4️⃣服务管理
4.1服务管理相关
4.2运行级别
4.3Linux启动流程
1.后台管理
1.1后台运行:软件进入到后台,一直保持,连接断开了,也不会受影响,软件还会在运行中。
1.2前台运行:一般远程连接服务器或虚拟机,在命令窗口输入的命令,命令默认就是前台运行,如果断开连接这个命令,操作就会结束。
1.2如何让软件进入到后台运行
后台运行 | 含义 | 应用的目的 |
1️⃣ 命令 &(键盘上数字7) | 常用的方法 | |
2️⃣ nohup 命令 & | 会记录输入到文件中,默认的文件是nohup.out文件 | |
3️⃣ 先运行命令,在按下Ctrl + z(后台运行),bg | ctrl +c 无法结束, 可以使用这个方法结束 | |
4️⃣ `screen命令 |
(1) &(这个符号是键盘上的数字7) 进入到后台运行
[root@localhost ~]# sleep 666 &
[1] 2229
[root@localhost ~]# ps aux |grep 2229
root 2229 0.0 0.0 108052 356 pts/0 S 12:56 0:00 sleep 666
root 2231 0.0 0.0 112824 980 pts/0 R+ 12:56 0:00 grep --color=auto 2229
(2)nohup 命令 & 方法
[root@localhost ~]# nohup xxxx(命令) &
[root@localhost ~]# nohup: 忽略输入并把输出追加到"nohup.out"
[root@localhost ~]# ll nohup.out
-rw-------. 1 root root 577 10月 18 13:10 nohup.out
[root@localhost ~]# tail -f nohup.out
(3)Ctrl +z ,fg 放在前台运行,bg后台运行
举例子:当下载一个命令,按了Ctrl +z 终止,如果再次运行下载的命令的时候可以使用bg放在前台或后台运行
第一步:下载命令,不小心按了Ctrl +z 已终止
[root@localhost ~]# yum install sz
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
^Z
[1]+ 已停止 yum install sz
第二步:用top命令查看
[root@localhost ~]# top
top - 13:21:17 up 2:59, 2 users, load average: 0.00, 0.01, 0.05
Tasks: 106 total, 1 running, 103 sleeping, 2 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.3 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 2027876 total, 1676000 free, 213680 used, 138196 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 1664796 avail Mem
第三步:过滤这个终止的掉后台挂起的状态
[root@localhost ~]# ps aux |grep T
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 958 0.0 0.2 225936 4880 ? Ss 10:22 0:00 /usr/bin/abrt-watch-log -F BUG: WARNING: at WARNING: CPU: INFO: possible recursive locking detected ernel BUG at list_del corruption list_add corruption do_IRQ: stack overflow: ear stack overflow (cur: eneral protection fault nable to handle kernel ouble fault: RTNL: assertion failed eek! page_mapcount(page) went negative! adness at NETDEV WATCHDOG ysctl table check failed : nobody cared IRQ handler type mismatch Kernel panic - not syncing: Machine Check Exception: Machine check events logged divide error: bounds: coprocessor segment overrun: invalid TSS: segment not present: invalid opcode: alignment check: stack segment: fpu exception: simd exception: iret exception: /var/log/messages -- /usr/bin/abrt-dump-oops -xtD
root 2335 0.1 1.2 354780 25852 pts/0 T 13:20 0:00 /usr/bin/python /usr/bin/yum install sz
root 2336 0.0 0.5 319288 11620 pts/0 T 13:20 0:00 /usr/bin/python /usr/libexec/urlgrabber-ext-down
root 2341 0.0 0.0 112824 960 pts/1 R+ 13:24 0:00 grep --color=auto T
第四步:如果想要继续执行上次终止的可以使用前台命令fg或后台的命令
(4)screen命令
第一步:安装
[root@localhost ~]# yum -y install screen
第二步:执行screen命令
[root@localhost ~]# screen
[root@localhost ~]#
第三步:进入到screen窗口
第四步:输入能持续运行的命令断网或断开连接(意外退出)
[root@localhost ~]# ping xxxx
第五步:查看screen -ls
[root@localhost ~]# screen -ls
There is a screen on:
1857.pts-0.localhost (Detached)
1 Socket in /var/run/screen/S-root.
第六步:过滤screen进程号
[root@localhost ~]# pstree -p
systemd(1)─┬─NetworkManager(1152)─┬─{NetworkManager}(1159)
│ └─{NetworkManager}(1162)
├─VGAuthService(934)
├─abrt-watch-log(938)
├─abrtd(922)
├─agetty(965)
├─auditd(862)───{auditd}(863)
├─crond(946)
├─dbus-daemon(924)───{dbus-daemon}(928)
├─firewalld(997)───{firewalld}(1308)
├─lvmetad(507)
├─master(1634)─┬─pickup(1640)
│ └─qmgr(1641)
├─polkitd(936)─┬─{polkitd}(954)
│ ├─{polkitd}(956)
│ ├─{polkitd}(962)
│ ├─{polkitd}(966)
│ ├─{polkitd}(983)
│ └─{polkitd}(993)
├─rsyslogd(1485)─┬─{rsyslogd}(1488)
│ └─{rsyslogd}(1489)
├─screen(1857)───bash(1858)───ping(1873)
├─sshd(1484)─┬─sshd(1732)───bash(1736)
│ └─sshd(1773)───bash(1777)───pstree(1875)
├─systemd-journal(482)
├─systemd-logind(933)
├─systemd-udevd(517)
├─tuned(1482)─┬─{tuned}(1725)
│ ├─{tuned}(1726)
│ ├─{tuned}(1728)
│ └─{tuned}(1730)
└─vmtoolsd(935)───{vmtoolsd}(1010)
第七步:恢复screen -r
[root@localhost ~]# screen -r 1857.pts-0.localhost
第八步:如果彻底退出当前窗口可以按ctrl + c 或ctrl +d 退出当前窗口
还有一个后台命令jobs
第一步:运行两个命令,按住ctrl +z 终止
[root@localhost ~]# sleep 888
^Z
[1]+ 已停止 sleep 888
[root@localhost ~]# sleep 666
^Z
[2]+ 已停止 sleep 666
第二步:查看状态有两个停止掉的状态 stopped
[root@localhost ~]# top
top - 15:09:41 up 45 min, 2 users, load average: 0.01, 0.03, 0.05
Tasks: 106 total, 2 running, 102 sleeping, 2 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.3 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 2027876 total, 1518756 free, 188632 used, 320488 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 1685316 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
935 root 20 0 305504 6552 5156 S 0.3 0.3 0:10.73 vmtoolsd
1958 root 20 0 162092 2200 1552 R 0.3 0.1 0:00.21 top
1 root 20 0 128408 7000 4144 S 0.0 0.3 0:03.57 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
5 root 20 0 0 0 0 S 0.0 0.0 0:00.50 kworker/u256:0
6 root 20 0 0 0 0 S 0.0 0.0 0:00.38 ksoftirqd/0
7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 R 0.0 0.0 0:01.15 rcu_sched
10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-drain
11 root rt 0 0 0 0 S 0.0 0.0 0:00.07 watchdog/0
13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
14 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns
15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khungtaskd
16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 writeback
17 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kintegrityd
18 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 bioset
19 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 bioset
第三步:用jobs命令查看有两个进程停止的
[root@localhost ~]# jobs
[1]- 已停止 sleep 888
[2]+ 已停止 sleep 666
第四步:两个进程杀掉
[root@localhost ~]# kill %1
[1]- 已停止 sleep 888
[root@localhost ~]#
[1]- 已终止 sleep 888
[root@localhost ~]# kill %2
[2]+ 已停止 sleep 666
[root@localhost ~]#
[2]+ 已终止 sleep 666
[root@localhost ~]# jobs
[root@localhost ~]#
2.结束Linux的进程相关命令
命令 | 含义 | |
kill | kill+进程的pid | |
pkill | pkill+进程名字,类似于模糊查找,误pkill掉其它进程 | |
killall | killall+进程名字,精确查找 |
1️⃣ kill信号
kill + pid 给发送结束信号
kill -9 +pid 进程号 发送强制结束信号,僵尸进程结束不了,切记别用kill -9 结束数据库进程 防止起不来进程
举例子:当你用pkill把sh的服务给结束了,这是Xshell连接不了虚拟机,此时这就相当于去机房重新启动远程连接服务sshd
此时在xhell中ping能通,telnet时不通的状态,需要到虚拟机重启ssd服务
在虚拟机中重启sshd服务,到xshell中就可以连接成功了。
3.负载
1️⃣ 负载概述
负载 load average 平均负载:1分钟 ,5分钟,15分钟,负载是衡量系统的繁忙程度一个指标,磁盘或者cpu读写
衡量系统是否繁忙程度:数值接近cpu核心总数,系统的负载就越高。查看cpu核心总数的命令:lscpu
2️⃣ 负载的含义:
平均负载是指单位时间内,系统处于可运行状态(R,S)和不可中断状态(D)的平均进程数,称为平均活跃进程数
系统负载衡量的是:可运行状态(R,S)占用CPU和不可中断状态(D)(io)
3️⃣ 负载高如何处理?
通过监控软件发现系统负载高:判断cpu和io导致的高
cpu高:top 中的us(user) 用户占用的cpu,sy(system)系统占用的cpu,用命令ps aux 中的cpu使用率那列
io高:top中的wa(wait)磁盘io导致的负载高原因,用命令iotop 默认是全部显示出来,有个选项参数-o 是把正在读写的进程显示出来
模拟负载高的iotop命令查看
第一步:用iotop命令查看
[root@localhost ~]# iotop -o
第二步:
dd if=/dev/zero of=/tmp/zhx bs=20M count=700
if input file(文件) 输入文件 if=/dev/zero
of oufput 输出文件(创建的文件) of=/tmp/zhx
bs block size 每次读取大小
count bs*count是文件的大小
还有其它的一些命令:strace (显示过程)、ltrace(调用)跟踪过程perf cpu分析
4.系统管理的服务管理模块
systemctl服务管理命令 | 开机自启动 | 服务开启关闭或重启 | 查看所有服务开机自启动情况 |
systemctl enable xxx(开启服务) | systemctl start xxx(当前开启服务) | systemctl list-units | |
systemctl disable xxx(关闭服务) | systemctl stop xxx(停止服务) | systemctl list-units-files | |
systemctl restart xxx(重启服务) |
1️⃣ 服务管理
服务管理命令systemctl :①开机自启动 (两个步骤:当前和正在运行的) ②管理正在运行的服务(两个步骤:当前和正在运行的)
检查ssd远程连接服务步骤:
1.检查服务状态(显示绿色当前正在运行中)
(1)active (running) 正在运行中
(2)enabled 开机自启动
(3)如何设置开机自启动
(1)enable 表示开启
(2)disable 表示关闭
1.开启
[root@localhost ~]# systemctl enable xxx服务
2.当前运行
[root@localhost ~]# systemctl start xxx服务
(2)关闭防火墙firewalld
第一步;先模拟开启
[root@localhost ~]# systemctl start firewalld.service
第二步:设置开机自启动
[root@localhost ~]# systemctl enable firewalld.service
第三步:关闭防火墙
[root@localhost ~]# systemctl disable firewalld.service
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
第四步:检查防火墙是否关闭firewalld
[root@localhost ~]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: active (running) since 六 2023-10-21 15:22:46 CST; 6h ago
Docs: man:firewalld(1)
Main PID: 967 (firewalld)
CGroup: /system.slice/firewalld.service
└─967 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid
10月 21 15:22:43 localhost systemd[1]: Starting firewalld - dynamic firewall daemon...
10月 21 15:22:46 localhost systemd[1]: Started firewalld - dynamic firewall daemon.
[root@localhost ~]# systemctl stop firewalld.service
(3)当改配置文件的时候重启
改完某服务配置文件需要重启配置文件
[root@localhost ~]#systemcctl restrt xxx(服务)
(4)查看所有的服务开机自启动的情况
[root@localhost ~]# systemctl list-units
[root@localhost ~]# systemctl list-unit-files
2️⃣ Linux运行级别
2.1运行级别:Linux的不同运行状态,命令行模式,图形化界面等等…
运行级别 | CentOS-7运行级别用单词表示 | CentOS-6运行级别 | |
0 | 关机 | 关机 | |
1 | 救援模式:找回root密码 | 单用户模式:用于找回root密码 | |
2 | 多用户模式 | 无网络的单用户模式 | |
3 | 多用户模式 | 命令行模式,默认模式 | |
4 | 多用户模式 | 未使用 | |
5 | 图形化界面模式(桌面模式) | 图形化界面模式(桌面模式) | |
6 | 重启 | 重启 |
2.2CentOS-7里的运行级别
[root@localhost ~]# ll /usr/lib/systemd/system/runlevel*.target
lrwxrwxrwx. 1 root root 15 6月 26 16:27 /usr/lib/systemd/system/runlevel0.target -> poweroff.target
lrwxrwxrwx. 1 root root 13 6月 26 16:27 /usr/lib/systemd/system/runlevel1.target -> rescue.target
lrwxrwxrwx. 1 root root 17 6月 26 16:27 /usr/lib/systemd/system/runlevel2.target -> multi-user.target
lrwxrwxrwx. 1 root root 17 6月 26 16:27 /usr/lib/systemd/system/runlevel3.target -> multi-user.target
lrwxrwxrwx. 1 root root 17 6月 26 16:27 /usr/lib/systemd/system/runlevel4.target -> multi-user.target
lrwxrwxrwx. 1 root root 16 6月 26 16:27 /usr/lib/systemd/system/runlevel5.target -> graphical.target
lrwxrwxrwx. 1 root root 13 6月 26 16:27 /usr/lib/systemd/system/runlevel6.target -> reboot.target
2.3如何修改运行级别
查看当前运行级别:切记不要修改
[root@localhost ~]# systemctl get-default
multi-user.target
[root@localhost ~]#
修改
[root@localhost ~]# systemctl set-default xxx(根据需要修改的运行级别)
2.4 运行级别其它命令init
3️⃣ Linux启动流程
CentOS-6 是串行,CentOS-7 是并行
3.1 当如果CentOS-7.x开机夯住时查看方法步骤
开机之后在这个页面按键盘的ESC键
当出现这个时是检查哪里出现卡顿的现象的原因