在Linux远程运行JAR包时,是不能关掉窗口程序的,否则程序也会终止。其中nohup表示后台运行,关闭窗口后也也继续执行,&意思是终端连接的时候后台运行,终端断了进程也会停。
具体解决方法是使用nohup命令,在窗口程序的前面加上nohup,程序的后面加上&,这样程序就会一直执行直到结束,而不会因为关闭窗口程序而停了。
例子,比如:nohupphpspider.php&回车,然后提示一堆东西,再次回车,回到shell界面。这就可以了。
还有一个问题:程序在执行中会输出一些信息,如果后台执行的话,这些信息是不是没法看了?(比如:程序执行出错终端,想看看报错信息之类的)。使用了nohup命令后,会在当前目录下生成一个nohup.out的日志文件,记录的就是命令的输出。
nohup命令运行由Command参数和任何相关的Arg参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用nohup命令运行后台中的程序。要运行后台中的nohup命令,添加&(表示“and”的符号)到命令的尾部。
nohup命令是英语词组nohangup的缩写,意思是不挂断,也就是指程序不退出。这个命令会使程序忽略HUP信号,保证程序能够正常进行。HUP信号有些人可能比较陌生,它是在终端被中止的时候向它所关联的进程所发出的信号,进程收到这个信号后就会中止运行。所以如果你不希望进程被这个信号干掉的话,就可以忽略这个信号。而nohup命令做的就是这个事情。
nohup命令,你希望你的程序在后台运行nohum命令可以将程序以忽略挂起信号的形式在后台运行,也就是被运行的程序,输出的结果不打印到终端。无论是否将nohup命令的输出重定向到终端,nohup命令执行的输出结果都会写入到当前目录的nohup.out文件中。如果当前目录的nohup.out文件禁止写入数据,nohup的命令结果会自动输出到$HOME/nohup.out文件中
nohup的语法
nohup 你要执行的命令
nohup命令的执行案例
1.nohup直接加上要执行的命令,即使你的终端关闭,程序也会在后台继续运行
nohup ping baidu.com
# 输出结果会写入到当前目录的 nohup.out 文件中,但是程序会卡在前台
# 关闭终端,命令不会挂掉,进程还会一直在运行,直到进程被杀死
tail -f nohup.out
2.一般使用nohup不会敲完命令后,直接关闭窗口,而是希望能够继续运行命令行,只需要在结尾加上一个&符号即可
3.不显示命令的执行结果,直接重定向到垃圾站(linux的黑洞文件)
# 把命令结果,重定向写入到nohup.out文件中,把标准错误输出到标准输出,写入到黑洞文件
标准错误输出 2
标准输出 1
# 把ping进程的正确输出结果,以及错误输出结果,都写入到chaoge.out文件中
nohup ping www.baidu.com >chaoge.out 2>&1 &
# 把命令放在后台运行,且无论是正确的输出或是错误的输出,都直接扔进黑洞,直接销毁
nohup ping www.baidu.com >/dev/null 2>&1 &
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)