进程:一个软件的运行就是一个进程。这些在CPU运行。
父进程和子进程:
父进程复制自己的地址空间(fork)创建一个新的(子)进程结构。每个新进程分配一个唯一的进程 ID (PID),满足跟踪安全性
之需。PID 和 父进程 ID (PPID)是子进程环境的元素,任何进程都可以创建子进程,所有进程都是第一个系统进程的后代:
子进程继承父进程的安全性身份、过去和当前的文件描述符、端口和资源特权、环境变量,以及程序代码。随后,子进程可能exec
自己的程序代码。通常,父进程在子进程运行期间处于睡眠(sleeping)状态。当子进程完成时发出(exit)信号请求,在退出时,
子进程已经关闭或丢弃了其资源环境,剩余的部分称之为僵停(僵尸Zombie)。父进程在子进程退出时收到信号而被唤醒,清理剩
余的结构,然后继续执行其自己的程序代码。
zombie僵尸进程,没办法杀死,只能重启系统
PID,PPID
当前的进程状态
内存的分配情况
CPU和已花费的实际时间
用户UID,它决定进程的特权
ps -ef 和 ps aux是查看进程的指令。
[root@localhost yasuo]# ps aux | head -3
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.3 128164 6824 ? Ss 09:30 0:25 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
root 2 0.0 0.0 0 0 ? S 09:30 0:00 [kthreadd]
UID指的是运行进程的发起用户的UID 能够决定进程的特权。
PID: 进程ID
%CPU: CPU占用率 1分钟内
%MEM: 内存占用率
VSZ: 占用虚拟内存
RSS: 占用实际内存 驻留内存
TTY: 进程运行的终端
STAT: 进程状态 man ps (/STATE)
R 运行
S 可中断睡眠 Sleep
D 不可中断睡眠
T 停止的进程
Z 僵尸进程 //不能有太多,有太多就不正常的
X 死掉的进程
Ss s进程的领导者,父进程
S< <优先级较高的进程
SN N优先级较低的进程
R+ +表示是前台的进程组
Sl 以线程的方式运行
START: 进程的启动时间
TIME: 进程占用CPU的总时间
COMMAND: 进程文件,进程名
查看指定进程的PID
[root@localhost yasuo]# ps -ef | grep sshd
root 1079 1 0 09:30 ? 00:00:00 /usr/sbin/sshd -D
root 1404 1079 0 09:30 ? 00:00:03 sshd: root@pts/0
root 2285 1079 0 10:13 ? 00:00:26 sshd: root@pts/1
root 26062 1596 0 18:17 pts/0 00:00:00 grep --color=auto sshd
进程树
[root@localhost yasuo]# 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───{dbus-daemon}
│ └─3*[{at-spi-bus-laun}]
├─at-spi2-registr───2*[{at-spi2-registr}]
├─atd
├─auditd─┬─audispd─┬─sedispatch
│ │ └─{audispd}
│ └─{auditd}
├─avahi-daemon───avahi-daemon
├─colord───2*[{colord}]
├─crond
├─cupsd
├─2*[dbus-daemon───{dbus-daemon}]
├─dbus-launch
├─dnsmasq───dnsmasq
├─firewalld───{firewalld}
├─gdm─┬─X───3*[{X}]
│ ├─gdm-session-wor─┬─gnome-session-b─┬─gnome-settings-───4*[{gnome-settings-}]
│ │ │ ├─gnome-shell─┬─ibus-daemon─┬─ibus-dconf───3*[+
│ │ │ │ │ ├─ibus-engine-sim─+++
│ │ │ │ │ └─2*[{ibus-daemon}+
│ │ │ │ └─10*[{gnome-shell}]
│ │ │ └─3*[{gnome-session-b}]
│ │ └─2*[{gdm-session-wor}]
│ └─3*[{gdm}]
├─gssproxy───5*[{gssproxy}]
├─ibus-x11───2*[{ibus-x11}]
├─irqbalance
├─ksmtuned───sleep
├─libvirtd───15*[{libvirtd}]
├─lsmd
├─lvmetad
├─master─┬─pickup
│ └─qmgr
├─packagekitd───2*[{packagekitd}]
├─polkitd───5*[{polkitd}]
├─pulseaudio───2*[{pulseaudio}]
├─rsyslogd───2*[{rsyslogd}]
├─rtkit-daemon───2*[{rtkit-daemon}]
├─smartd
├─sshd─┬─sshd───bash───pstree
│ └─sshd───bash───tail
├─systemd-journal
├─systemd-logind
├─systemd-udevd
├─tuned───4*[{tuned}]
├─upowerd───2*[{upowerd}]
├─vmtoolsd
├─wpa_supplicant
└─xdg-permission-───2*[{xdg-permission-}]
top指令可以查看全局的信息。按Q退出。
top - 18:08:48 up 8:38, 2 users, load average: 0.00, 0.02, 0.05
Tasks: 154 total, 1 running, 152 sleeping, 1 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1867048 total, 763548 free, 351184 used, 752316 buff/cache
KiB Swap: 4194300 total, 4194300 free, 0 used. 1236576 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 128164 6824 4056 S 0.3 0.4 0:24.93 systemd
408 root 20 0 0 0 0 S 0.3 0.0 0:11.24 xfsaild/dm-0
672 root 20 0 21620 1272 960 S 0.3 0.1 0:21.66 irqbalance
1404 root 20 0 147784 5248 3968 S 0.3 0.3 0:03.01 sshd
25093 root 20 0 157716 2212 1528 R 0.3 0.1 0:01.70 top
2 root 20 0 0 0 0 S 0.0 0.0 0:00.11 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:01.09 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.17 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 S 0.0 0.0 0:32.39 rcu_sched
10 root rt 0 0 0 0 S 0.0 0.0 0:00.61 watchdog/0
11 root rt 0 0 0 0 S 0.0 0.0 0:00.77 watchdog/1
12 root rt 0 0 0 0 S 0.0 0.0 0:01.79 migration/1
13 root 20 0 0 0 0 S 0.0 0.0 0:03.54 ksoftirqd/1
15 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/1:0H
17 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kdevtmpfs
h|?帮助
M 按内存的使用排序
P 按CPU使用排序
N 以PID的大小排序
R 对排序进行反转
f 自定义显示字段
1 显示所有CPU的负载
kill指令:用信号杀死进程。
kill 4577 不写信号默认15
- SIGHUP 重新加载配置进程pid不变 重新启动:会先关闭后开启的和重新加载不同
- SIGINT 键盘中断^C
- SIGQUIT 键盘退出
- SIGKILL 强制终止
- SIGTERM 终止(正常结束),缺省信号,不一定响应,但如果响应了,会自动清空占用的资源
- SIGCONT 继续 把停止的进程继续
- SIGSTOP 停止
20)SIGTSTP 暂停^Z
优先级:
Linux 进程调度及多任务
相对优先级nice
查看进程的nice级别
启动具有不同nice级别的进程
更改现有进程的nice级别
Nice NI值高优先级低
范围从-20 到19
nice [选项] 命令
nice命令可以给新执行的命令直接赋予NI值,但是不能修改已经存在进程的NI值。
选项:
-n NI值:给命令赋予NI值
例如
nice -n -5 service httpd start
renice命令
renice [优先级] PID
renice命令是修改已经存在进程的NI值得命令
前台进程和后台进程
foreground:
前台进程是在终端中运行的命令,该终端为进程的控制终端。前台进程接收键盘产生的输入和信号,并允许从终端读取或写入到终端。
background:
后台进程没有控制终端,它不需要终端的交互。
指令后加 “&” 可以在后台运行指令。
jobs :查看作业进程。
Ctrl+Z :将前台进程弄到后台并停止。
bg % 1 将1号进程在后台运行,启动。
fg % 1 将1号进程挪到前台。
虚拟内存和实际内存,虚拟内存是指通用的函数部分+自己本身的部分,实际内存就是指本身的地方。