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

我正在运行一个服务器,需要执行以下命令与参数。 脚本现在工作很好,但问题是当我运行脚本我不能返回到控制台。 它一直在控制台中运行。 如果我强行阻止,那么这个过程也将停止。

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

#!/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错误: command not found是一个单独的问题。 : 之前的文本是环境无法找到的命令。 由于之前没有任何东西:你试图启动一个由空字符串组成的命令; 这里是一个例子:

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

可能这是因为你有一个未命中的变量,你正在使用的命令,因此有一些尝试执行空字符串命令(当然,这是不存在的)。

还有一个选择是在后台发送进程,如下所述:

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

 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 (...)