繁体   English   中英

从bash脚本退出,但保持进程运行

[英]Exit from bash script but keep the process running

我正在运行服务器,需要执行以下带有参数的命令。 脚本目前运行良好,但问题是当我运行脚本时,我无法返回控制台。 它一直在控制台中运行。 如果我强行停止它,则该过程也将停止。

我想继续运行该过程并返回到控制台。

#!/bin/sh
php /home/stjc/app/artisan queue:listen --timeout=60 --tries=5

谢谢

在后台运行该过程:

#!/bin/sh
(php /home/stjc/app/artisan queue:listen --timeout=60 --tries=5) &

尝试在原始命令的两边都在结尾加上一个&符( & )。

编辑:

:是一个内置的shell,这意味着NOP取决于您的操作系统,可能会出现问题,请尝试在php命令中转义它,然后查看它是否对您有用

#!/bin/sh
(php /home/stjc/app/artisan queue\:listen --timeout=60 --tries=5) &

强烈建议您将完整路径放入您的php解释器。

只需在命令后追加&之后,shell就会在后端运行作业。它将返回以下内容:[1]3633。 [1]表示Shell作业ID, 3633表示OS进程ID。 如果要停止任务,只需键入kill 3633

#!/bin/sh
php /home/stjc/app/artisan queue:listen --timeout=60 --tries=5 &

您可以在命令末尾使用&来在后台运行进程,或者可以使用nohup命令将进程与终端完全断开连接,以便即使退出shell后它仍继续运行。

错误: command not found是一个单独的问题。 :是环境无法找到一个命令。 由于:之前没有任何内容,因此您试图启动一个由空字符串组成的命令; 这是一个例子:

$ foo
-bash: foo: command not found
$ ''
-bash: : command not found

这可能是因为您有一个miss-set变量被用作命令,因此有人试图执行空字符串命令(当然不存在)。

还有一个选项可以在后台发送进程,如下所述:

您希望运行的运行脚本或命令:例如

girishp@~$ ping 10.137.108.192
PING 10.137.108.192 (10.137.108.192) 56(84) bytes of data.
64 bytes from 10.137.108.192: icmp_seq=1 ttl=64 time=7.18 ms
64 bytes from 10.137.108.192: icmp_seq=2 ttl=64 time=0.367 ms

在运行命令时按Ctrl + Z,它将停止运行

^Z
[1]+  Stopped                 ping 10.137.108.192

在终端中键入bg以在后台恢复执行

 girishp@~$ bg
 [1]+ ping 10.137.108.192 &
 girishp@~$ 64 bytes from 10.137.108.192: icmp_seq=5 ttl=64 time=5.46 ms
 64 bytes from 10.137.108.192: icmp_seq=6 ttl=64 time=4.56 ms

您可以通过在终端中输入fg再次在前台运行它:

girishp@~$fg
ping 10.137.108.192
64 bytes from 10.137.108.192: icmp_seq=22 ttl=64 time=0.397 ms
64 bytes from 10.137.108.192: icmp_seq=23 ttl=64 time=3.99 ms

(...)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM