0

我想从我的 shell 脚本运行一个可执行文件。可执行文件位于 /usr/bin/to_run。

我的 shell 脚本(调用上述可执行文件)位于 /usr/bin 文件夹中。

外壳脚本是:

#!/bin/bash

#kill all existing instances of synergy

killall synergys
sh "/usr/bin/synergys"

if [ $? -eq 1 ]; then
echo "synergy server started"
else
echo "error in starting"
fi

我收到一条错误消息:“协同作用:未找到进程”。

当我直接从终端运行相同的东西 - /usr/bin/synergys 时,它运行良好,但在脚本中存在问题。我不明白为什么。

先感谢您。

4

2 回答 2

3

该错误来自killall命令,它表示没有与您的参数匹配的候选进程。

如果您不想在没有匹配的进程时收到通知,只需使用以下quiet选项:

killall -q synergys

killall手册页:

-q, --quiet
     如果没有进程被杀死,不要抱怨。

于 2013-05-14T01:42:48.507 回答
0

如果/usr/bin/synergys是可执行文件而不是 shell 脚本,您将直接运行它,而不是通过 shell:

/usr/bin/synergys

或者,由于大多数人都喜欢,你可以简单地写/usr/bin$PATH

synergys

如果/usr/bin/synergys实际上是一个shell脚本,它应该是可执行的(例如,555或-r-xr-xr-x权限),你仍然可以编写只是synergys为了执行它。sh如果文件/usr/bin/synergys不可执行并且是 shell 脚本,您只需要使用显式。

于 2013-05-14T02:10:02.550 回答