已整理-Linux进程概念与常用操作
目录:
1、进程的一些概念
进程:动态的代码,占用内存+CPU
进程有唯一的标识:PID ,也就是进程编号;父进程是:PPID
进程由父进程创建,父进程创建子进程;
在结束进程的时候,父进程会杀死所有的子进程,再结束父进程;
【僵尸进程】->没有死透的进程,进程以为自己死了,但实际还占用CPU+内存,处理方法是杀死僵死进程;
【孤儿进程】->父进程被杀死,留一下个子进程,没有父进程管它了,可能会疯狂的占用CPU+内存资源;
2、显示进程树-pstree
pstree 命令显示进程树,常用格式:
-a   显示完整的命令行
-p   列出对应的PID编号
# pstree systemd─┬─NetworkManager───2*[{NetworkManager}] ├─VGAuthService ├─agetty ├─auditd───{auditd} ├─ceph-crash ├─ceph-mds───14*[{ceph-mds}] ├─ceph-mgr───31*[{ceph-mgr}] ├─ceph-mon───23*[{ceph-mon}] ├─2*[ceph-osd───54*[{ceph-osd}]] ├─chronyd ├─crond ├─dbus-daemon ├─irqbalance ├─lvmetad ├─node_exporter───4*[{node_exporter}] ├─polkitd───6*[{polkitd}] ├─radosgw───580*[{radosgw}] ├─rsyslogd───2*[{rsyslogd}] ├─smbd─┬─cleanupd │ ├─lpqd │ ├─smbd │ └─smbd-notifyd ├─sshd─┬─2*[sshd───bash] │ └─sshd───bash───pstree ├─systemd-journal ├─systemd-logind ├─systemd-udevd ├─tuned───4*[{tuned}] └─vmtoolsd───{vmtoolsd}
systemd 是所有进程的父进程,完成开机的一些初始化工作;
systemd 还会定期巡检是否有【孤儿进程】,会接受所有的孤儿进程,并杀死【孤儿进程】;
# pstree lisi         #查看 lisi 开启的进程
bash───vim
# pstree -ap lisi        #查看 lisi 开启的进程,树状显示
bash,100313
└─vim,100344 test.txt
3、查看进程快照-ps
ps->Processes Snapshot
-格式:ps [选项]...
常用命令选项:
-aux:   显示当前终端所有进程(a)、当前用户在所有终端下的进程(x), 以用户格式输出
-elf:   显示系统内所有进程(-e)、以长格式输出(-l)、信息包括最完整的进程信息(-f)
# ps aux 
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 191308 4180 ? Ss May30 0:15 /usr/lib/systemd/systemd --system --deserialize 16
格式详解:
USER:     用户
PID:     进程ID
%CPU:     占用CPU
%MEM:     占用内存
VSZ:     占用虚拟内存
RSS:     固定内存
TTY:     终端
STAT:	  状态
TIME:     起始时间
COMMAND:   执行的命令
# ps -elf           #相较于ps aux , 可以快速的找到进程的父进程PPID这一列,还有NI,优先级
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
4 S root 1 0 0 80 0 - 47827 ep_pol May30 ? 00:00:15 /usr/lib/systemd/systemd --system --deserialize 16
4、进程动态排名-top
top 交互式工具,格式:
语法格式:top [-d 刷新秒数] [-U 用户] [-n 显示次数]
其中-n 指定显示次数后,到了指定的次数后,就会自动退出交换界面;
进入top交互后,按:
大写P, 进程CPU占用排名,由高到低排名
大写M, 进程内存占用排名,由高到低排名
top头部字段描述:
top - 16:58:33 up 8 days, 23:44, 3 users, load average: 0.00, 0.01, 0.05 #当前时间 | 开机时间 | 登陆用户数量 | 负载 1分钟 5分钟 15分钟 Tasks: 187 total, 2 running, 185 sleeping, 0 stopped, 0 zombie #任务进程信息 %Cpu(s): 0.1 us, 0.0 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st #CPU利用率 KiB Mem : 7990272 total, 334756 free, 3915228 used, 3740288 buff/cache #内存利用率 KiB Swap: 6160380 total, 6160380 free, 0 used. 3748972 avail Mem #swap利用率
5、检索进程-pgrep
用途: pgrep [选项]...  查询条件
常用命令选项:
-l     输出进程名,而不仅仅是PID
-U     检索指定用户的进程
-x      精确匹配完整的进程名
# pgrep -l -U lisi bash      #查看lisi 执行的bash命令进程
100313 bash
6、进程的前后台调度
前台启动:输入正常命令行,运行期间占用当前终端
后台启动:在命令行末尾 【&】符号,不占用当前终端
示例:
# cp /dev/cdrom mycd.iso &    #后台制作ISO镜像文件
[2] 22378
【Ctrl+z 组合键】:    挂起当前进程(暂停并转入后台)
【jobs命令】:      查看后台任务列表
【fg命令】:       将后台任务恢复到前台运行,缺省序号则为最近1个任务
【bg命令】:       激活后台被挂起的任务,缺省序号则为最近1个任务
【Ctrl+c 组合键】:    结束当前进程,当进程调度到前台时,可以按这个键结束;
示列:
# sleep 800              #睡眠 800s 占用当前前台操作,按Ctrl+z 组合,暂停并转入后台
^Z
[1]+ Stopped sleep 800
# jobs                  #可以看到后台的进程,编号为:1
[1]+ Stopped sleep 800
# fg 1                  #又调度到前台了,再按ctrl+z 再暂停并转入后台,如果按ctrl+c 就结束进程了
sleep 800
# bg 1                  #后台激活进程
[1]+ sleep 800 &
# jobs
[1]+ Running sleep 800 &
7、杀死进程-(kill/killall/pkill)
干掉进程的不同方法:
> ctrl+c组合键,中断当前命令程序
> kill [-9] PID / kill [-9] %后台任务编号
> killall [-9] 进程名
> pkill 查找条件
示例:
# killall -9 vim         #杀死同名的多个进程
# pkill -9 -U lisi        #强制踢出用户
# jobs
[1]+ Running sleep 800 &
# kill -9 %1             #杀死后台进程
[1]+ Killed sleep 800
以上命令全部支持以下杀死信号:
> 1 (HUP):重新加载进程。
> 9 (KILL):强制杀死一个进程。
> 15 (TERM):正常停止一个进程。
                    
                
                
            
        
浙公网安备 33010602011771号