进程的生命周期
父进程复制自己的地址空间(fork)创建一个新的(子)进程结构。每个新进程分配一个唯一的进程 ID (PID),满足跟踪安全性
之需。PID 和 父进程 ID (PPID)是子进程环境的元素,任何进程都可以创建子进程,所有进程都是第一个系统进程的后代:
Centos5/6: init
Centos7: systemd
子进程继承父进程的安全性身份、过去和当前的文件描述符、端口和资源特权、环境变量,以及程序代码。随后,子进程可能exec自己的程序代码。通常,父进程在子进程运行期间处于睡眠(sleeping)状态。当子进程完成时发出(exit)信号请求,在退出时,子进程已经关闭或丢弃了其资源环境,剩余的部分称之为僵停(僵尸Zombie)。父进程在子进程退出时收到信号而被唤醒,清理剩余的结构,然后继续执行其自己的程序代码。
查看进程
1. # ps aux
2. # ps -ef
3. # ps axo user,pid,ppid,%mem,command
4. # ps axo user,pid,ppid,%mem,%cpu,command --sort -%cpu |less //排序设计
显示界面简述
USER: 运行进程的用户
PID: 进程ID
%CPU: CPU占用率
%MEM: 内存占用率
VSZ: 占用虚拟内存
RSS: 占用实际内存 驻留内存
TTY: 进程运行的终端
STAT: 进程状态 man ps (/STATE)
R 运行
S 可中断睡眠 Sleep
D 不可中断睡眠 (usually IO)
T 停止的进程
Z 僵尸进程
X 死掉的进程
【了解 】
Ss s进程的领导者,父进程
S< <优先级较高的进程
SN N优先级较低的进程
R+ +表示是前台的进程组
Sl 以线程的方式运行
查看指定进程的PID
[root@tianyun ~]# ps aux |grep sshd
root 10180 0.0 0.0 7224 1024 ? Ss 16:00 0:00 /usr/sbin/sshd
[root@tianyun ~]# pgrep -l sshd
10180 sshd
[root@tianyun ~]# pgrep sshd
10180
[root@tianyun ~]# pidof sshd
10180
动态查看进程 top
[root@tianyun ~]# top //
[root@tianyun ~]# top -d 1 //
[root@tianyun ~]# top -d 1 -p 10126 //查看指定进程的动态信息
[root@tianyun ~]# top -d 1 -p 10126,1 //
[root@tianyun ~]# top -d 1 -u apache //查看指定用户的进程
[root@tianyun ~]# top -d 1 -b -n 2 > top.txt // 将2次top信息写入到文件
第一部分:系统整体统计信息
top - 14:15:04 up 47 min, 2 users, load average: 0.25, 0.18, 0.12
Tasks: 235 total, 1 running, 234 sleeping, 0 stopped, 0 zombie
Cpu(s): 8.9%us, 1.0%sy, 0.0%ni, 90.1%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 7944064k total, 746164k used, 7197900k free, 35724k buffers
Swap: 1048568k total, 0k used, 1048568k free, 261492k cached
cpu stat
信号控制kill
[root@tianyun ~]# kill -l //列出所有支持的信号
编号 信号名
1) SIGHUP 重新加载配置 PID不变
2) SIGINT 键盘中断^C
3) SIGQUIT 键盘退出
9) SIGKILL 强制终止
15) SIGTERM 终止(正常结束),缺省信号
18) SIGCONT 继续
19) SIGSTOP 停止
20)SIGTSTP 暂停^Z
1. # kill -1 9100
2. # killall vim
3. # pkill -u alice 终止用户的进程
4. # pkill -t pts/2 //终止pts/2上所有进程
5. # pkill -9 -t pts/2 //终止pts/2上所有进程 并结束该pts/2
6. # pkill vim
进程优先级
相对优先级 nice
由于不是每个进程都与其他进程同样重要,可告知进程调度程序为不同的进程使用不同的调度策略。常规系统上运行的大多
数进程所使用的调度策略为 SCHED_OTHER (也称为SCHED_NORMAL),但还有其它一些调度策略用于不同的目的。
SCHED_OTHER 调度策略运行的进程的相对****优先级称为进程的 nice 值,可以有40种不同级别的nice值。
nice 值越高: 表示优先级越低,例如+19,该进程容易将CPU 使用量让给其他进程。
nice 值越低: 表示优先级越高,例如-20,该进程更不倾向于让出CPU。
调节nice值
[root@tianyun ~]# nice -n -5 sleep 6000 &
[root@tianyun ~]# nice -n -20 systemctl start httpd
[root@tianyun ~]# renice -20 10089
作业控制job
基本命令
[root@tianyun ~]# sleep 3000 & //
[root@tianyun ~]# jobs //查看后台作业
[root@tianyun ~]# bg %2 //让作业2在后台运行
[root@tianyun ~]# fg %1 //将作业1调回到前台
[root@tianyun ~]# kill %1 //kill 1,终止PID为1的进程
屏幕回写screen
[root@www ~]# yum -y install screen //安装
[root@www ~]# screen -S install_apache //命名屏幕
[root@www ~]# screen -list //列出屏表
[root@www ~]# screen -r 29013 //返回此屏幕