查看系统所有进程:ps
1 | ps aux # 观察固定时刻下的进程状态,process status |
各字段介绍
1 | USER: 运行进程的用户 |
查看进程树
1 | pstree [进程id] |
查看父进程
1 | ps -elf # 列出进程相关信息,以及pid和ppid(parent pid) |
top命令基础用法
1 | top # 动态查看进程信息 |
展示信息解释:
1 | 第一行:系统整体统计信息,使用 `uptime` 命令也可以查看 |
1 | 第二行:任务情况 |
1 | 第三行:CPU占用 |
1 | 第四行:物理内存的使用情况 |
1 | 第五行:虚拟内存的使用情况 |
top界面命令
1 | M 按内存的使用排序 |
1 | r 调整进程的优先级(Nice Level) |
1 | k 给进程发送信号 1,2(^C),9,15,18,19(^Z) |
设置优先级:nice
1 | 命令启动时设置该命令的优先级 |
1 | 命令启动后设置新的优先级 |
给进程发送信号:kill
1 | kill [-信号] [进程id] # 给进程发送信号 |
1 | kill -l # 列出所有可以发送给进程的信号 |
重点关注:
1 HUP: 1、挂起信号 2、往往可以让进程重新加载配置
9 KILL:强制杀死进程。效果等同于pkill -9 [进程名字]
19 STOP:暂停进程
18 CONT:恢复进程
用户登录后,会在该用户的bash进程上运行命令,该用户的所有命令的父进程都是该用户的bash进程,当该用户登出时,该用户的bash进程终止,bash进程会给它的所有子进程发送hup信号,所有子进程都会终止。
让进程脱离当前会话窗口而独立运行的方法:
单条命令脱离会话窗口运行:&、nohup、setsid、子shell
方案1
1 | [命令] & # 在命令的后面加上 & 符号,让进程在后台运行 |
方案2
1 | nohup [命令] & |
方案3
1 | setsid [命令] & # 直接将该进程的父进程设置为 systemd ,在后台运行。 |
方案
1 | ([命令] &) # 在 `命令 &` 的外围加上一个括号,表示在子shell中启动进程 |
多条命令脱离会话窗口运行:screen
screen让进程脱离会话窗口运行的原理是:
screen进程会创建一个窗口:SCREEN窗口,让所有进程在SCREEN窗口里来运行,即所有进程的父进程是SCREEN窗口,SCREEN窗口帮助我们管理进程。screen进程基于用户的bash进程在后台运行,当关闭会话窗口时,screen进程被杀掉,而SCREEN窗口的父进程自动变为 systemd,SCREEN窗口仍然在运行,仍然在管理着它的所有子进程在后台运行。从而实现多条命令脱离会话窗口运行。
安装软件包
1 | yum install screen -y |
运行命令
1 | screen [命令] |
恢复进程
1 | screen -ls # 查看screen管理的所有子进程 |
1 | screen -r [pid] # 恢复子进程到前台运行 |
1 | jobs # 显示当前系统的任务列表 |
1 | fg %[任务序号] # fg 命令用于将作业(被挂起或者在后台运行的作业)放到前台运行 |
1 | bg %[任务序号] # bg 命令用于将作业放到后台运行,使前台可以执行其他任务 |
1 | kill %[任务序号] # 结束任务,强制结束可以在kill之后加 -9 |
僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵尸进程。
孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被 systemd 进程(进程号为1)所收养,并由systemd 进程对它们完成状态收集工作。
僵尸进程因为资源不会完全释放,因此有可能会造成占用大量pid,导致无法开启新的进程,但是孤儿进程不会。
如果出现僵尸进程,首先尝试让父进程去回收它的僵尸进程:kill -CHLD [父进程pid]
,让父进程调用wait或waitpid来清理僵尸儿子,如果无效,再考虑杀死父进程,让僵尸进程变成孤儿进程,由systemd进程来回收。
systemctl命令 是系统服务管理器指令,它实际上将 service 和 chkconfig 这两个命令组合到一起。
任务 | 旧指令 | 新指令 |
---|---|---|
开启某服务自启 | chkconfig –level 3 httpd on | systemctl enable httpd.service |
关闭某服务自启 | chkconfig –level 3 httpd off | systemctl disable httpd.service |
检查服务状态 | service httpd status | systemctl status httpd.service (服务详细信息) systemctl is-active httpd.service (仅显示是否 Active) |
显示所有已启动的服务 | chkconfig –list | systemctl list-units –type=service |
启动服务 | service httpd start | systemctl start httpd.service |
停止服务 | service httpd stop | systemctl stop httpd.service |
重启服务 | service httpd restart | systemctl restart httpd.service |
重载服务 | service httpd reload | systemctl reload httpd.service |