后台运行
shell 中执行命令若以&
结尾,则程序会在后台执行,当用户退出时该后台程序会停止运行。若需要程序永久运行可以使用nohup
可使用jobs
查看正在运行的作业,然后可以使用fg %n
(n 为作业编号)将后台任务返回前台
Ctrl+c 是强制中断程序的执行。 Ctrl+z 的是将任务中断,但是此任务并没有结束,他仍然在进程中他只是维持挂起的状态。
Ctrl+z 的程序也可以使用fg
将其返回前台
jobs -l
显示pid
查询进程
查询正在运行的进程信息
1
ps -ef
查询归属于用户 colin115 的进程
1
2ps -ef | grep colin115
ps -lu colin115查询进程 ID(适合只记得部分进程字段)
1
pgrep <name>
以完整的格式显示所有的进程
1
ps -ajx
显示进程内存占用
1
ps -aux
查看端口占用的进程状态:
1
lsof -i:3306
查看用户 username 的进程所打开的文件
1
lsof -u username
查询 init 进程当前打开的文件
1
lsof -c init
查询指定的进程 ID(23295)打开的文件:
1
lsof -p 23295
查询指定目录下被进程开启的文件(使用+D 递归目录):
1
lsof +d mydir1/
杀进程
kill 命令可向进程发送指定的信号(默认发送的信号是 SIGTERM)。kill -l
:显示信号的信息,我们常用的kill -9
就是SIGKILL
信号
分析进程
pstack
此命令可显示每个进程的栈跟踪,pstack <pid>
,这个命令在排查进程问题时非常有用,比如我们发现一个服务一直处于 work 状态(如假死状态,好似死循环),使用这个命令就能轻松定位问题所在;可以在一段时间内,多执行几次 pstack,若发现代码栈总是停在同一个位置,那个位置就需要重点关注,很可能就是出问题的地方;
常用命令
快速杀进程
1 | ps -ef|grep java|grep -v grep|awk '{print "kill -9 "$2}'|sh |