一、后缀 &
这种命令会至于后台运行,产生的输入还是会出现在前台,可以这样做:
my.sh > /dev/null 2>&1 &
这里解释下:一个命令后面加 >
表示将输出信息到文件,默认是将1类型(即正常输出),然后后面跟着 2>&1
表示将类型2(错误输出)也输出到和1类似一样的文件中去,/dev/null
表示空输出,不保存内容
这种做法会在中断ssh连接后中断,如果需要不中断采用第二种方式
二、nohub方法
这种方法可以在ssh连接中断后继续运行
nohub my.sh > /dev/null 2>&1 &
可以使用jobs -l
查看后台进程,使用 fg
恢复
三、screen方法
这种方法更加强大,但需要安装screen
,参考:screen使用
然后可以结合开机启动
参考:http://www.jianshu.com/p/3246be7c9dde
四、&和nohub区别
在Linux中可以使用以下2个命令让程序以job的方式在后端运行,以便让出终端来干其他事情。 那么nohup 与& 有什么区别呢?# nohup a.out &
# a.out &
当关闭终端时,shell默认会发送SIGHUP信号给与该终端关联的进程,从而导致其他进程跟随终端退出。 nohup捕获了SIGHUP,并做了忽略处理,因此进程不会退出。
仅&通常没有捕获SIGHUP,因此当终端关闭时,jobs会退出。但是可以通过shell配置成退出时不发送SIGHUP,此时效果与nohup相同。
shopt | grep hupon 查看shell针对hup信号选项配置。如果为off,则表示终端退出时,shell不发送SIGHUP信号;为on,则表示会发送。
五、查看后台进程
jobs -l
- 使用
ps
命令可以看到所有后台进程,然后使用killall 名称
或者kill -9 后台进程号
查找具体的后台应用:ps -aux | grep 名称