程序是保存在外部存储介质(如硬盘)中的可执行机器代码和数据的静态集合,而进程 是在 CPU 及内存中处于动态执行状态的计算机程序。在 Linux 操作系统中,每个程序启动后可以创建一个或多个进程。例如,提供 Web 服务的 httpd 程序,当有大量用户同时访问Web 页面时,httpd 程序可能会创建多个进程来提供服务。
a 显示当前终端下所有进程信息,包含其他用户进程,与“X”选项结合时显示系统中的所有进程信息
u 使用以用户为主的格式输出进程信息
x 显示当前用户在所有终端下的进程信息
-e 显示系统内的所有进程消息
-l 使用长格式显示进程信息
-f 使用完整的格式显示进程信息
[root@localhost ~]# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 191132 4112 ? Ss 17:38 0:01 /usr/lib/systemd/systemd --switched-roo root 2 0.0 0.0 0 0 ? S 17:38 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 17:38 0:00 [ksoftirqd/0] root 5 0.0 0.0 0 0 ? S< 17:38 0:00 [kworker/0:0H] root 7 0.0 0.0 0 0 ? S 17:38 0:00 [migration/0] root 8 0.0 0.0 0 0 ? S 17:38 0:00 [rcu_bh] root 9 0.0 0.0 0 0 ? S 17:38 0:00 [rcu_sched] root 10 0.0 0.0 0 0 ? S< 17:38 0:00 [lru-add-drain]上诉命令解释 USER 启动该进程的用户账号名称 TTY 表明该进程在那个终端上运行, “?”表示不需要终端STAT 显示了进程当前的状态,如S(休眠),R(运行),Z(僵尸),<(高优先级),N(低优先级),s(父进程),+(前台进程),对于僵尸进程要手动关闭 START 启动该进程的时间 TILE 该进程占用的CPU时间 COMMAND 启动该进程的命令名称 %CPU 占用cpu百分比 %MEM 占用内存比 VSZ 占用虚拟机内存大小(swap) RSS 占用物理内存的大小(物理内存)
使用 ps 命令查看到的是一个静态的进程信息,并不能连续地反馈出当前进程的运行状态。若希望以动态刷新的方式显示各进程的状态信息,可以使用 top 命令 top 命令将会在当前终端以全屏交互式的界面显示进程排名,及时跟踪包括 CPU、内存等系统资源占用情况 默认情况下每三秒钟刷新一次,其作用基本类似于Windows 操作系统中的任务管理器
[root@localhost ~]# top top - 00:00:19 up 6:21, 1 user, load average: 0.00, 0.01, 0.03 Tasks: 187 total, 1 running, 186 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 : 7990280 total, 6815440 free, 669760 used, 505080 buff/cache KiB Swap: 16777212 total, 16777212 free, 0 used. 6992072 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 41 root 20 0 0 0 0 S 0.3 0.0 0:02.04 kworker/3:1 9424 mysql 20 0 1860976 206092 7440 S 0.3 2.6 0:04.69 mysqld 10343 gdm 20 0 713940 16356 9124 S 0.3 0.2 0:01.66 gsd-color 1 root 20 0 191132 4112 2604 S 0.0 0.1 0:01.57 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd根据特定条件查询进程PID
pgrep -l “log” -l 显示进程名 pgrep -l -U teacher -t tty1 -U指定特定用户 -t指定终端 [root@localhost ~]# pgrep -l "log" 4434 xfs-log/dm-0 7706 xfs-log/sda1 8936 systemd-logind 8953 abrt-watch-log 8954 abrt-watch-log 9330 rsyslogd以树形结构列出进程信息 -p 选项使用时可以同时列出对应的PID号
-u 选项可以列出对应的用户名
-a 选项累哦列出完整的命令信息
[root@localhost ~]# pstree systemd─┬─ModemManager───2*[{ModemManager}] ├─NetworkManager───2*[{NetworkManager}] ├─VGAuthService ├─2*[abrt-watch-log] ├─abrtd ├─accounts-daemon───2*[{accounts-daemon}] ├─alsactl ├─at-spi-bus-laun─┬─dbus-daemon │ └─3*[{at-spi-bus-laun}] ├─at-spi2-registr───2*[{at-spi2-registr}] ├─atd ├─auditd─┬─audispd─┬─sedispatch │ │ └─{audispd} │ └─{auditd} ├─avahi-daemon───avahi-daemon手工启动进程 手动启动:用户输入命令,直接执行程序
后台启动:在命令行尾加入“&”符号
调度启动进程 在服务器维护工作中,经常需要执行一些比较费时而且较占用资源的任务(如数据备份),这些任务更适合在相对空闲的时候(如夜间)进行。这时就需要用户事先进行调度安排,指 定任务运行的时间,当系统到达设定时间时会自动启动并完成指定的任务。调度启动的计划 任务进程均在后台运行,不会占用用户的命令终端。 进程的调度启动可以通过 at、crontab 命令进行设置,其中 at 命令用于设置一次性(如12:15 时重启网络服务)计划任务,crontab 命令用于设置周期性运行(如每周一 20.65 备份数据库)的计划任务。
Ctrl+Z组合键 将当前进程挂起,即调入后台并停止执行
jobs命令 查看后台的任务列表 jobs -l
fg 将后台恢复到前台运行,可指定任务序号
bg 可以将后台暂停执行(如按Ctrl+Z组合键挂起)的任务恢复运行,继续在后台执行操作
Ctrl+C组合键 中断正在执行的命令
Kill,killall命令 Kill用于终止指定的PID号的进程
[root@localhost ~]# pgrep -l "httpd" 14724 httpd 14725 httpd 14726 httpd 14727 httpd 14728 httpd 14729 httpd [root@localhost ~]# kill 14724 [root@localhost ~]# pgrep -l "httpd" [root@localhost ~]#Killall用于终止指定名称的所有进程 -9 选项用于强制终止
Pkill命令 根据特定条件终止相应的进程 常用命令选项 -U 根据进程所属的用户名终止相应的进程 -t 根据进程的终端终止相应进程在当天的21.00时自动关闭当前系统
[root@localhost ~]# at 21.00 at> shutdown -h now at> <EOT> job 2 at Wed Oct 21 21:00:00 2020atq 查看未执行的任务列表
[root@localhost ~]# atq 2 Wed Oct 21 21:00:00 2020 a rootatrm 删除第二条任务
[root@localhost ~]# atrm 2 [root@localhost ~]# atq [root@localhost ~]# ^Ccrontab命令 (分 时 日 月 周)
Crontab -e (—u 用户名) ##管理crontab计划任务编辑计划任务
Crontab -l (—u 用户名)## 查看计划任务
Crontab -r (—u 用户名) ##删除任务计划 时间数值的特殊表示方式
" * " : 表示该范围内的任意时间 减号“-”:可以表示一个连续的时间范围,如“1-4”表示整数 1、2、3、4。 逗号“,”:可以表示一个间隔的不连续范围,如“3, 4, 6, 8”。 斜杠符号“/”:可以用来指定间隔频率,如在日期字段中的“*/3”表示每隔 3 天。