进程管理
查看进程process
1、进程的参数
PID,PPID
当前的进程状态
内存的分配情况
CPU和已花费的实际时间
用户UID,他决定进程的特权
2、查看进程
ps [选项]
-a:显示所有终端机下执行的程序,除了阶段作业领导者之外
a: 显示现行终端机下的所有程序,包括其他用户的程序
-A:显示所有程序
-H:显示树状结构,表示程序间的相互关系
x: 显示所有程序,不以终端机来区分
u: 以用户为主的格式来显示程序状况
-U:<用户识别码>:列出属于该用户的程序的状况,也可使用用户名称来指定
3、动态查看进程
[root@test ~]# top
[root@test ~]# top -d
[root@test ~]# top -d 1 -p 10126 //查看指定进程的动态信息
[root@test ~]# top -d 1 -p 10126,1
[root@test ~]# top -d 1 -u apache //查看指定用户的进程
[root@test ~]# top -d 1 -b -n 2 > top.txt //将2次top信息写入到文件
用信号控制进程
1、kill (选项) (参数) //使用进程的PID杀死进程
[root@test ~]# kill -l //列出所有支持的信号
编号 信号名
1) SIGHUP 重新加载配置 PID不变
2) SIGINT 键盘中断^C
3) SIGQUIT 键盘退出
9) SIGKILL 强制终止
15) SIGTERM 终止(正常结束),缺省信号
18) SIGCONT 继续
19) SIGSTOP 停止
20)SIGTSTP 暂停^Z
Example:
kill -9 sshd; //强制杀死sshd进程
kill -15 sshd; //告知sshd进程,让其自行结束
2、killall (选项) (参数) //使用进程的名字杀死进程
-e:对长名称进行精确匹配
-l:忽略大小写的不同
-p:杀死进程所属的进程组
-i:交互式杀死进程,杀死进程前需要进行确认
-l:打印所有已知信号列表
-q:如果没有进程被杀死。则不输出任何信息
-r:使用正规表达式匹配要杀死的进程名称
-s:用指定的进程号代替默认信号“SIGTERM”
-u:杀死指定用户的进程
Example:
killall vi //杀死所有同名的进程
3、pkill (选项) (参数)
-o:仅向找到的最小(起始)进程号发送信号
-n:仅向找到的最大(结束)进程号发送信号
-P:指定父进程号发送信号
-g:指定进程组
-t:指定开启进程的终端
Example:
pkill -t pts/2 //终止pts/2上所有进程
pkill -u alice //将alice用户从本终端踢出
进程控制jobs
控制进程在前端或者后端运行
[root@test ~]# sleep 3000 & //运行程序(时),让其在后台执行
[root@test ~]# sleep 4000 //^Z,将前台的程序挂起(暂停)到后台
[2]+ Stopped sleep 4000
[root@test ~]# ps aux |grep sleep
root 8895 0.0 0.0 100900 556 pts/0 S 12:13 0:00 sleep 3000
root 8896 0.0 0.0 100900 556 pts/0 T 12:13 0:00 sleep 4000
[root@test ~]# jobs //查看后台作业
[1]- Running sleep 3000 &
[2]+ Stopped sleep 4000
[root@test ~]# bg 2 //让作业2在后台运行
[root@test ~]# fg 1 //将作业1调回到前台
[root@test ~]# kill 1 //kill 1,终止PID为1的进程
[root@test ~]# (while :; do date; sleep 2; done) & //进程在后台运行,但输出依然在当前终端
[root@test ~]# (while :; do date; sleep 2; done) &>/dev/null & //& 放在命令的最后才是后台符
管理远程主机
[root@test ~]# ssh 10.18.40.100
[root@www ~]# yum -y install screen //第一次
[root@www ~]# screen -S install_apache
==断网后,重新连接==
[root@www ~]# screen -list
There are screens on:
28958.install_nginx (Detached)
29013.install_apache (Detached)
2 Sockets in /var/run/screen/S-root.
[root@www ~]# screen -r 29013