我想从我的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时它运行正常,但是从脚本中有问题。我不明白为什么。
提前谢谢。
答案 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
。