输入 ./test.sh & 运行
运行后1.txt文件会不断增加内容,但是脚本以后台运行不会在终端占用。运行结果为:
输入 jobs 可以看到这个后台进程:
这个时候如果输入exit,不会提示有后台进程在运行,而且后台进程也会退出。因为终端会话退出的时候会给这个后台进程发送一个 SIGHUP信号 。如果想要终端退出之后,进程不退出,可以让进程捕获SIGHUP信号。当然还有另一个方法,使用 nohup 指令运行脚本,比如输入:
当用 nohup 并使或宏用后台模式运行之后,即使退出终端,进程也不会收到SIGHUP信号。并且nohup会自动把标准输出和慧团亮标准错误重定向到nohup.out的文件中。
一个 运行的进程或者暂停的进程 都是一个作业,使用 jobs 命令可以查看当前的作业状态。输入:
我当前的输出为:
(上面的作业2是输入 ctrl+z 后暂停的进程)
其中, + 号被当作是默认作业,每个作业的前面有自己的序号。如果后续 *** 作不加序号,那么就被当做是在 *** 作默认作业。比如使用 fg 指令前台运行作业,就是把27652这个进程前台运行,如果输入 fg 1 ,那么就是 *** 作作业 1 了。带-号的表示下一个默认作业。
输入 bg 1 把前宽 1号作业 后台运行,输入 fg 2 把 2号作业 前台运行。
运行命令后面加 &是后台运行,但启动它的父进程如果退出,这个 &方式运行的依然会退出。我的建议是用 screen 。这样会启动一个 shell “屏幕搭顷”可以随时断开漏慧后再另外一个地方重新恢复。
另外还一个方法是用 fg bg nohup 这一套命令也可以。不过具体怎么知搜陆用我没研究,但控制不如 screen 方便。
其实你这个最好的办法还是写到服务器的开机运行命令行里面,方便很多啊。
另外……占用 ssh 有什么大问题么……
用&后缀只是把该命令挂在当前运行窗口的后台,窗口关掉了当然就停止了。要挂到系统后台才能达到,不同SHELL下模昌燃命迅晌令格式旦虚有所不同,例如在C SHELL下是:
# nohup sleep 1000 &
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)