从linux shell脚本运行linux可执行文件

时间:2013-05-14 01:39:28

标签: shell

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

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

shell脚本是:

#!/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时它运行正常,但是从脚本中有问题。我不明白为什么。

提前谢谢。

2 个答案:

答案 0 :(得分:3)

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

如果您不希望在没有进程匹配的情况下收到通知,请使用quiet选项:

killall -q synergys

来自killall手册页:

  

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

答案 1 :(得分:0)

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

/usr/bin/synergys

或者,由于/usr/bin位于大多数人的$PATH上,您可以简单地写一下:

synergys

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