程序执行流是从上到下贯穿执行的; 当进程是多任务,cpu是多核心,多任务应该同时被每个核心处理,每个核心处理的任务叫线程,线程资源是共享的。
#进程状态
状态含义#R(TAKS_RUNNING)可执行态(running,ready)#S(TAKS_INTRRUPTABLE)可唤醒休眠#D(TAKS_UNINTRRUPTABLE)不可唤醒休眠#T(TASK_STOP)暂停状态#Z(EXIT_ZOMBIE)僵死态gnome-system-monitor # 图形进程查看工具 ps # 进程查看,ps命令的三种执行风格(UNIX BSD GNU)
命令功能###以下为BSD风格###a与终端相关的进程x与终端无关的进程u用户信息归类的查看方式f进程层级关系o显示指定参数(pid,comm,nice,pri(优先级),pcpu(父级cpu),ppid,stat(状态),user,group)###以下为UNIX风格###-e显示所有进程-f显示信息的完整格式-H显示进程的层级结构-o显示指定参数--sort=整理[root@localhost ~]# ps ax -o %cpu,user --sort=-%cpu #以cpu顺序倒序查看用户使用cpu情况 ps ax显示信息:
#PID 进程id #TTY 进程用到的终端 #STAT 进程状态 #TIME 进程占用CPU时间 #COMMANps aux显示信息如下:
#USER 进程所有人 #PID 进程id #%CPU 进程使用CPU的用量 #%MEM 进程所用到的内存用量 #VSZ 进程使用的虚拟内存大小 #RSS 进程常驻内存中的数据大小 #TTY 进程用到的终端 #STAT 进程状态 #START 进程运行时长 #TIME 进程占用CPU时长 #COMMAND 进程名称pgrep #进程过滤
命令功能-uuid显示指定用户进程-Uuser显示指定用户进程-ttty显示指定终端进程-l显示进程名称-a显示进程的完整名称-P显示进程的子进程pidof vim #查看vim的pid
top #动态进程查看
top命令参数:
命令功能top -d指定刷新频率top -b以批次方式显示top -n指定显示的批次数量top内部命令:
命令功能PCPU排序M内存排序T累计cpu时间排序l关闭/开启 uptime信息t关闭/开启cpu&tasks指定刷新频率k操作进程u查看指定用户进程 #PID 进程id #USER 进程所有者的用户名 #PR 优先级 #NI nice值,负值表示高优先级,正值表示低优先级 #VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES #RES 进程使用的、未被患处的物理内存大小,单位kb。RES=CODE+DATA #SHR 共享内存大小,单位kb #S 进程状态(D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程) #%CPU 上次更新到现在的CPU时间占用百分比 #%MEM 进程使用的物理内存百分比 #TIME+ 进程使用的CPU时间总计,单位1/100s #COMMAND 命令名/命令行系统是多任务多用户的操作模式,任务的重要性是有区分的。用优先级确定任务的重要性 “优先级”范围:0–139;内核自控(实时)优先级范围:0-99;用户可控优先级范围:100-139
renice -n -5 pid #更改优先级,-5可为-20-19中任意,约负优先级越高 nice -n -5 cat #指定优先级打开进程 #实验 [root@localhost ~]# renice -n -5 3129 3129 (process ID) old priority 0, new priority -5 [root@localhost ~]# ps ax -o pid,nice,command | grep cat 2321 0 /usr/libexec/gsd-print-notifications 3017 0 /usr/libexec/gsd-print-notifications 3129 -5 /usr/bin/gnome-software --gapplication-service 70936 0 grep --color=auto cat注: ps ------> pri -----> 0-39 nice ---------------> -20-19 priority -----------> 0-139(100-139),0-99系统分配
STAT标识功能:
命令功能SSleeping<优先级高s顶级进程TStopN优先级低Rrunningl在系统中有存储空间+运行在前台 #练习 [root@localhost /]# ps -o comm,pid,stat,nice COMMAND PID STAT NI su 68674 S 0 bash 68680 S 0 top 69230 T 0 ps 70991 R+ 0 [root@localhost /]# renice -n -5 68680 #修改优先级 68680 (process ID) old priority 0, new priority -5 [root@localhost /]# ps -o comm,pid,stat,nice COMMAND PID STAT NI su 68674 S 0 bash 68680 S< -5 #对应的NI值改变,STAT标识改变 top 69230 T 0 ps 71026 R<+ -5Ctrl+z 把占用shell的进程打入后台挂起
命令功能bg把后台挂起的进程运行起来fg把后台进程调回前台&运行进程在后台jobs查看当前shell中在后台的所有工作 #实验 [root@localhost /]# jobs [root@localhost /]# gedit ^Z [1]+ Stopped gedit [root@localhost /]# jobs [1]+ Stopped gedit [root@localhost /]# bg [1]+ gedit & [root@localhost /]# jobs [1]+ Running gedit & [root@localhost /]# cat ^Z #后台挂起 [2]+ Stopped cat [root@localhost /]# jobs [1]- Running gedit & [2]+ Stopped cat [root@localhost /]# bg 2 [2]+ cat & [root@localhost /]# jobs [1]- Running gedit & [2]+ Stopped cat [root@localhost /]# bg 2 [2]+ cat & [root@localhost /]# jobs [1]- Running gedit & [2]+ Stopped cat [root@localhost /]# cat & [3] 78296 [root@localhost /]# jobs [1] Running gedit & [2]- Stopped cat [3]+ Stopped cat [root@localhost /]# fg 1 gedit ^C [root@localhost /]# fg cat ^C #结束进程 [root@localhost /]#进程信息
信号含义1重新加载系统配置文件(source)—> 软件热处理2清空内存中的进程数据 —>Ctrl+c3清空内存中的鼠标Ctrl+/9强制关闭进程(不能被阻塞)15正常关闭进程(会被阻塞)18运行被暂停的进程19暂停进程(不会被阻塞)20暂停进程(会被阻塞)进程信号控制工具
kill 进程信号 pid killall 进程信号 进程名字 pkill 进程信号 进程条件 #实验 [root@localhost /]# ps PID TTY TIME CMD 68674 pts/0 00:00:00 su 68680 pts/0 00:00:00 bash 78083 pts/0 00:00:00 dbus-launch 78286 pts/0 00:00:00 cat 78708 pts/0 00:00:00 vim 78709 pts/0 00:00:00 vim 78710 pts/0 00:00:00 vim 78719 pts/0 00:00:00 gedit 78734 pts/0 00:00:00 ps [root@localhost /]# kill -9 78708 [root@localhost /]# ps PID TTY TIME CMD 68674 pts/0 00:00:00 su 68680 pts/0 00:00:00 bash 78083 pts/0 00:00:00 dbus-launch 78286 pts/0 00:00:00 cat 78709 pts/0 00:00:00 vim 78710 pts/0 00:00:00 vim 78719 pts/0 00:00:00 gedit 78744 pts/0 00:00:00 ps [3] Killed vim [root@localhost /]# killall -9 vim [4] Killed vim [5]- Killed vim [root@localhost /]# ps PID TTY TIME CMD 68674 pts/0 00:00:00 su 68680 pts/0 00:00:00 bash 78083 pts/0 00:00:00 dbus-launch 78286 pts/0 00:00:00 cat 78719 pts/0 00:00:00 gedit 78746 pts/0 00:00:00 ps [root@localhost ~]# pkill -9 -u lee #结束进程中用户名为lee的进程 #结果如下:远程操作主机: ssh 远程主机ip -l 远程主机用户
守护进程:替内核分担程序控管的程序,通常pid为1。
systemctl的用法:
命令功能start开启stop关闭status查看状态reload重新加载restart重新启动服务enable设定服务开机启动enable --now设定服务开机启动 并当前开启disable设定服务开机不启动list-units查看系统所有服务当前状态list-units-files查看服务开机状态list-dependencies列出服务依赖性mask冻结服务unmask解锁set-default设定服务运行模式multi-user.target 无图形的网络模式graphical.target 有图形的网络模式get -default查看系统运行模式系统运行模式(0-6):
命令功能0Poweroff1Single2noG+Network345G+Network6REBOOT