0

シェル スクリプトから実行可能ファイルを実行したいと考えています。実行可能ファイルは /usr/bin/to_run にあります。

私のシェル スクリプト (上記の実行可能ファイルを呼び出している) は /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は、シェル経由ではなく、直接実行します。

/usr/bin/synergys

または、ほとんどの人が知っているので、単純に次のように書くこともできます/usr/bin:$PATH

synergys

が実際にシェル スクリプトである場合/usr/bin/synergysは、実行可能 (たとえば、555 または-r-xr-xr-xアクセス許可) である必要があり、実行するためだけに書き込むこともできますsynergysshファイル/usr/bin/synergysが実行可能はなく、シェルスクリプトである場合にのみ、明示的に使用する必要があります。

于 2013-05-14T02:10:02.550 に答える