我正在运行一个服务器,需要执行以下命令与参数。 脚本现在工作很好,但问题是当我运行脚本我不能返回到控制台。 它一直在控制台中运行。 如果我强行阻止,那么这个过程也将停止。
我想继续运行该过程并返回到控制台。
#!/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 (...)