1.程序后加上“&”,即“./myjob &”,将命令放入到一个作业队列中,可以用命令“jobs”查看。
2.将1中的命令放在“()”中,即“(./myjob &)”,所提交的作业并不在作业列表中,是无法通过jobs查看。
3.使用“nohup”,即 “nohup ./myjob &”,忽略hangup信号,防止shell关闭时程序停掉。
4.使用“setsid”,即“setsid ./myjob”。
5.对已经运行的程序可以用“disown -hmyjob”来使某个作业忽略HUP信号。
6.使用“screen". screen 下的操作会在screen下运行,无法在jobs中查看到。常用的命令有:
a新建一个screen: screen-S my_screen_name建好后就可以进行所需要的操作了。
b暂时断开screen: Ctrl-a d
c重新打开screen: Ctrl-a screen_id
d查看所有screen状态: screen -ls
e终止screen: screen -S my_screen_name -Xkill
f在当前窗口新建窗口: Ctrl-a c
g退出当前窗口: exit
h显示所有窗口列表:Ctrl-a w
1.jobs -l
jobs命令只看当前终端生效的,关闭终端后,在另一个终端jobs已经无法看到后台跑得程序了,此时利用ps(进程查看命令)。
2.ps -ef
ps -aux|grep chat.js
a:显示所有程序;u:以用户为主的格式来显示;x:显示所有程序,不以终端机来区分。
用ps -def | grep查找进程很方便,最后一行总是会grep自己,用grep -v参数可以将grep命令排除掉,如下:
ps -aux|grep chat.js| grep -v grep
再用awk提取一下进程ID,如下:
ps -aux|grep chat.js| grep -v grep | awk '{print $2}'
3.如果某个进程起不来,可能是某个端口被占用
a查看使用某端口的进程
lsof -i:8090 或 netstat -ap|grep 8090
b查看到进程id之后,使用netstat命令查看其占用的端口
netstat -nap|grep 7779
c使用kill杀掉进城后再启动
kill -9 进程号