|——ps 查看静态的进程统计信息
———— 查看进程|——top 查看动态进程信息
| |——pgrep 查询进程信息
查看和控制进程| | ——pstree 查看进程树
|
————控制进程|——at 一次性任务设置
| ——crontab 周期性任务设置
ps——查看静态进程统计信息
选项:
a:显示当前终端下的所有进程信息
u:使用以用户为主的格式输出进程信息
x:显示当前用户所在所有终端下的进程信息
-e:下按时系统内所有进程信息
-l:使用长(long)格式显示进程信息
-f:使用完整的(full)格式显示进程信息
一般使用ps aux或ps -elf命令
[root@localhost ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.6 0.0 193700 6828 ? Ss 13:46 0:02 /usr/lib/systemd/systemd --
root 2 0.0 0.0 0 0 ? S 13:46 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 13:46 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 13:46 0:00 [kworker/0:0H]
root 7 0.0 0.0 0 0 ? S 13:46 0:00 [migration/0]
root 8 0.0 0.0 0 0 ? S 13:46 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? S 13:46 0:00 [rcu_sched]
root 10 0.0 0.0 0 0 ? S 13:46 0:00 [watchdog/0]
root 11 0.0 0.0 0 0 ? S 13:46 0:00 [watchdog/1]
root 12 0.0 0.0 0 0 ? S 13:46 0:00 [migration/1]
root 13 0.0 0.0 0 0 ? S 13:46 0:00 [ksoftirqd/1]
root 14 0.0 0.0 0 0 ? S 13:46 0:00 [kworker/1:0]
root 15 0.0 0.0 0 0 ? S< 13:46 0:00 [kworker/1:0H]
root 16 0.0 0.0 0 0 ? S 13:46 0:00 [watchdog/2]
root 17 0.0 0.0 0 0 ? S 13:46 0:00 [migration/2]
root 18 0.0 0.0 0 0 ? S 13:46 0:00 [ksoftirqd/2]
root 20 0.0 0.0 0 0 ? S< 13:46 0:00 [kworker/2:0H]
root 21 0.0 0.0 0 0 ? S 13:46 0:00 [watchdog/3]
root 22 0.0 0.0 0 0 ? S 13:46 0:00 [migration/3]
root 23 0.0 0.0 0 0 ? S 13:46 0:00 [ksoftirqd/3]
root 25 0.0 0.0 0 0 ? S< 13:46 0:00 [kworker/3:0H]
root 27 0.0 0.0 0 0 ? S 13:46 0:00 [kdevtmpfs]
USER:启动该进程的用户账号的名称
PID:该进程在系统中的数字ID号,在当前系统中是唯一的
TTY:表明该进程在哪个终端上运行。“?”表示未知或不需要终端
STAT:显示了进程当前状态,S(休眠)、R(运行)、Z(僵死)、<(高优先级)、N(低优先级)、
s(父进程)、+(前台进程)。处于僵死状态的进程要手动终止。
START:启动该进程的时间
TIME:该进程占用的CPU时间
COMMAND:启动该进程的命令与名称
%CPU:cpu占用百分比
%MEM:内存占用百分比
VSZ:占用虚拟内存(swap空间)的大小
RSS:占用常驻内存(物理内存)的大小
执行ps-elf则将以长格式显示系统中的进程信息,并包含丰富的内容。
[root@localhost ~]# ps -elf
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
4 S root 1 0 0 80 0 - 48425 ep_pol 13:46 ? 00:00:02 /usr/lib/systemd
1 S root 2 0 0 80 0 - 0 kthrea 13:46 ? 00:00:00 [kthreadd]
1 S root 3 2 0 80 0 - 0 smpboo 13:46 ? 00:00:00 [ksoftirqd/0]
1 S root 5 2 0 60 -20 - 0 worker 13:46 ? 00:00:00 [kworker/0:0H]
1 S root 7 2 0 -40 - - 0 smpboo 13:46 ? 00:00:00 [migration/0]
1 S root 8 2 0 80 0 - 0 rcu_gp 13:46 ? 00:00:00 [rcu_bh]
1 S root 9 2 0 80 0 - 0 rcu_gp 13:46 ? 00:00:00 [rcu_sched]
5 S root 10 2 0 -40 - - 0 smpboo 13:46 ? 00:00:00 [watchdog/0]
5 S root 11 2 0 -40 - - 0 smpboo 13:46 ? 00:00:00 [watchdog/1]
1 S root 12 2 0 -40 - - 0 smpboo 13:46 ? 00:00:00 [migration/1]
1 S root 13 2 0 80 0 - 0 smpboo 13:46 ? 00:00:00 [ksoftirqd/1]
1 S root 14 2 0 80 0 - 0 worker 13:46 ? 00:00:00 [kworker/1:0]
1 S root 15 2 0 60 -20 - 0 worker 13:46 ? 00:00:00 [kworker/1:0H]
5 S root 16 2 0 -40 - - 0 smpboo 13:46 ? 00:00:00 [watchdog/2]
1 S root 17 2 0 -40 - - 0 smpboo 13:46 ? 00:00:00 [migration/2]
单独ps只会显示用户会话打开的进程
[root@localhost ~]# ps
PID TTY TIME CMD
2429 pts/0 00:00:00 bash
3975 pts/0 00:00:00 ps
管道符号| 加grep过滤
[root@localhost ~]# ps aux |grep bash #过滤bash的信息
root 797 0.0 0.0 115256 924 ? S 13:46 0:00 /bin/bash /usr/sbin/ksmtuned
root 1937 0.0 0.0 51332 584 ? Ss 13:47 0:00 /usr/bin/ssh-agent /bin/sh -c exec -l /bin/bash -c "env GNOME_SHELL_SESSION_MODE=classic gnome-session --session gnome-classic"
root 2429 0.0 0.0 118652 3220 pts/0 Ss 13:47 0:00 -bash
root 3993 0.0 0.0 112664 972 pts/0 S+ 14:07 0:00 grep --color=auto bash
top——查看进程动态信息
默认每三秒刷新一次,若不想服务器断开也用此命令
[root@localhost ~]# top
top - 14:09:06 up 22 min, 2 users, load average: 0.00, 0.01, 0.05
Tasks: 199 total, 1 running, 198 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 7994076 total, 5515300 free, 758492 used, 1720284 buff/cache
KiB Swap: 16777212 total, 16777212 free, 0 used. 6911548 avail Mem
上述输出信息中,开头部分显示了系统任务(Tasks)、cpu占用、内存占用(mem)、交换空间(swap)
等汇总信息,汇总信息下方依次显示当前进程的排名情况。
系统任务(tasks)信息:total,总进程数;running,正在运行的进程数;sleeping,休眠的进程数;
stopped,终止的进程数;zombie,僵死无响应的进程数。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2135 root 20 0 384948 18376 14552 S 0.3 0.2 0:00.87 vmtoolsd
1 root 20 0 193700 6828 4056 S 0.0 0.1 0:02.65 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.02 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
7 root rt 0 0 0 0 S 0.0 0.0 0:00.03 migration/0
-cpu占用信息;us,用户占用;sy,内存占用;ni,优先级调度占用;id,空闲的cpu;wa,I/O等待占用;
hi,硬件中断占用;si,软件中断占用;st,虚拟化占用。要了解空闲的cpu占比主要看%id部分
-内存占用(mem)信息:total,总内存空间;uesd,已用交换空间;free,空闲内存;buffers,缓冲区域。
-交换空间占用(swap)占用:total,总交换空间;used,已用交换空间;free,空闲交换空间;cached,缓存空间。
pgrep——查询进程信息
选项
-l 同时输出进程名
[root@localhost ~]# pgrep -l "log"
431 xfs-log/dm-0
652 xfs-log/sda1
732 rsyslogd
739 abrt-watch-log
746 abrt-watch-log
749 systemd-logind
-U选项查询特定的用户进程、-t查询特定终端运行的进程
[root@localhost ~]# pgrep -l -U root
1 systemd
2 kthreadd
3 ksoftirqd/0
5 kworker/0:0H
7 migration/0
8 rcu_bh
9 rcu_sched
10 watchdog/0
11 watchdog/1
12 migration/1
13 ksoftirqd/1
pstree——查看进程树
选项
-p:列出对应的PID号
-a:列出完整的命令信息
-u:列出对应的用户名
[root@localhost ~]# pstree -aup #查看当前系统的进程数,包括各进程对应pid号、用户名、完整命令等。
systemd,1 --switched-root --system --deserialize 21
├─ModemManager,718
│ ├─{ModemManager},743
│ └─{ModemManager},780
├─NetworkManager,808 --no-daemon
│ ├─{NetworkManager},821
│ └─{NetworkManager},825
├─VGAuthService,741 -s
├─abrt-watch-log,739 -F Backtrace /var/log/Xorg.0.log -- /usr/bin/abrt-dump-xorg -xD
├─abrt-watch-log,746 -F BUG: WARNING: at WARNING: CPU:INFO: possible recursive locking de
├─abrtd,738 -d -s
├─accounts-daemon,737
│ ├─{accounts-daemon},751
│ └─{accounts-daemon},779
├─alsactl,721 -s -n 19 -c -E ALSA_CONFIG_PATH=/etc/alsa/alsactl.conf--initfile=/lib/alsa
├─anacron,3936 -s
├─at-spi-bus-laun,1952
控制进程
手动启动进程要使用到&操作符&放在命令最末尾
[root@localhost ~]# cp /dev/cdrom mycd.iso &
[1] 4692
改变进程的运行方式
linux命令在前台执行时,按ctrl+z组合键可以将任务调入后台挂起。
[root@localhost ~]# wget ftp://173.17.17.13/Firefox-latest.bar.bz2
--2020-07-20 14:48:13-- ftp://173.17.17.13/Firefox-latest.bar.bz2
=> ‘Firefox-latest.bar.bz2’
Connecting to 173.17.17.13:21... ^Z 调到后台挂起
[1]+ Stopped wget ftp://173.17.17.13/Firefox-latest.bar.bz2
[root@localhost ~]#
※fg 加后台进程排名序号可以将挂起的进程重新调入前台执行。
终止进程执行
kill需要使用进程pid号作为参数。若进程无响应加-9选项强行终止进程。
[root@localhost ~]# pgrep -l -U yuheng
4943 sshd
4944 bash #bash进程pid是4944
[root@localhost ~]# kill -9 4944 #yuheng账户就掉线了
[root@localhost ~]# pgrep -l -U yuheng
[root@localhost ~]# 啥也不显示了
killall 可以将同名的进程都强行终止
挂起vimtest进程
killall -9 vim 把名为vim所有进程强行终止
pkill可以根据进程的名称、运行的用户、进程的终端等多种属性终止特定进程
[root@localhost ~]# pgrep -l -U yuheng 查看yuheng下进程相关信息
5191 sshd
5192 bash
[root@localhost ~]# pkill -9 -U "yuheng" 终止yuheng的进程
[root@localhost ~]# pgrep -l -U yuheng 查看yuheng下的进程
[root@localhost ~]# 确认全部终止
计划任务管理
at——一次性任务设置
[root@localhost ~]# at 15:16 2020-07-21
at> at> pgrep -U root | wc -l > /otp/sj.root 7.21号15.16创建sj文件夹把root用户运行的进程数保存到opt下
at> <EOT> ctrl+d提交任务
job 3 at Tue Jul 21 15:16:00 2020
设置21.30关闭电脑
[root@localhost ~]# at 21:30
at> shutdown -h now 在21.30时候关闭电脑
at> <EOT> ctrl+d提交
job 5 at Mon Jul 20 21:30:00 2020
查看未执行的任务atq
[root@localhost ~]# atq
3 Tue Jul 21 15:16:00 2020 a root
5 Mon Jul 20 21:30:00 2020 a root
删除进程atrm
[root@localhost ~]# atrm 3
[root@localhost ~]# atrm 5
[root@localhost ~]# atq
[root@localhost ~]# 确认3 5进程被删除
crontab周期性任务设置
[root@localhost ~]# cat /etc/crontab
SHELL=/bin/bash #设置执行计划的shell环境
PATH=/sbin:/bin:/usr/sbin:/usr/bin#定义可执行命令程序路径
MAILTO=root #将任务输出信息发送到指定用户邮箱
HOME+/ #执行计划任务时使用主目录
# For details see man 4 crontabs
# 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) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
分时日月周
使用crontab管理用户的计划任务
-e 编辑计划任务列表
-u 指定所管理的计划任务属于那个用户,默认当前用户,一般只有root有权限使用
-l 列表显示计划任务
-r 删除计划任务列表
分钟+小时+日期+月份+星期 /任务
分钟:取值0-59任意整数
小时:取值0-23任意整数
日期:取值1-31任意整数
月份:取值1-12任意整数
星期:取值0-7任意整数
命令:可以是普通的命令,也可以是脚本程序
-:表示一个连续的时间范围,如1-4
,:可以表示一个时间间隔不连续的范围,如1,4,8
/:用来指定间隔频率
举例:每天早上7:50开启sshd服务
[root@localhost ~]# crontab -e #进入编辑任务
no crontab for root - using an empty one
50 7 * * * /sbin/service sshd start #7:50开启ssh服务
[root@localhost ~]# crontab -l #查看人物列表
50 7 * * * /sbin/service sshd start
[root@localhost ~]# crontab -r #清空任务列表
[root@localhost ~]# crontab -l #确认任务列表没有任务
no crontab for root