【发布时间】:2016-03-20 13:55:38
【问题描述】:
我正在运行服务器,需要使用参数执行以下命令。脚本目前运行良好,但问题是当我运行脚本时无法返回控制台。它继续在控制台中运行。如果我强行停止它,那么该过程也将停止。
我想继续运行该进程并返回控制台。
#!/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
谢谢
【问题讨论】:
在后台运行该进程:
#!/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 解释器的完整路径。
【讨论】:
php 代码本身有任何错误。
dos2unix 修复文件,或查看有关此问题的一大堆问题 - 这是一个非常常见的常见问题解答。
: 是一个 shell 命令。你不是在粘贴你的真实代码;否则,您描述的错误将是不可能的。请发布真实代码、真实错误,并在描述配置时包含 PATH 的内容。
'queue:listen'。也就是说,我认为这不是问题所在。 : 不是作为命令以外的特殊字符,所以如果它是参数的一部分,它就可以正常工作。例如,echo foo:bar 有效。
您可以使用& at the end of your command 在后台运行进程,或使用nohup 命令将进程与终端完全断开,以便即使在您退出 shell 后它也能继续运行。
错误: command not found 是一个单独的问题。 : 之前的文本 是环境找不到的命令。由于: 之前没有任何内容,因此您正在尝试启动一个由空字符串组成的命令;这是一个例子:
$ foo
-bash: foo: command not found
$ ''
-bash: : command not found
这可能是因为您将一个未设置变量用作命令,因此某些东西正试图执行空字符串命令(当然,它不存在)。
【讨论】:
$baa here 与 baa 未设置产生 here: command not found
"$baa" here 将复制该问题。 : 命令确实存在,因此这显然不会导致 OP 的错误消息。
只需在您的命令后附加&,shell 就会在后端运行作业。它将返回类似:[1] 3633.[1] 表示 shell 作业 ID,3633 表示操作系统进程 ID。如果要停止任务,只需键入kill 3633。
#!/bin/sh
php /home/stjc/app/artisan queue:listen --timeout=60 --tries=5 &
【讨论】:
还有一个选项是在后台发送进程,如下所述:
运行您希望运行的脚本或命令: 例如
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
(...)
【讨论】: