ネットワークの起動後にバックアップクライアントを起動するために、/etc/init/tsm.conf
に非常に小さなupstartジョブがあります。 service tsm start|stop|status
を使用して手動で開始/停止しても問題ありません。しかし、service tsm enable
はtsm: unrecognized service
と言います。そのため、起動時に自動的に起動しません。 Sudo service --status-all
は、既知のジョブのリストにも表示されません。
ここにあります:
start on started networking
stop on stopped networking
respawn
script
#!/bin/bash
dsmc schedule > /dev/null
end script
私はubuntu 12.04.4。を実行しますアップスタートバージョンは1.5-0ubuntu7.2です。誰も私を助けることができますか? :)
UPDATE
initctl list
および他のinitctlコマンドを使用すると、私の仕事がわかります。
私の経験では、何も「有効」にする必要はありません。confを/ etc/initに入れて楽しんでください。
スクリプトに次のような行を追加すると、スクリプトが実行されることを確認できます。
echo "alive" > /alive_and_well
これにより、スクリプトが実行される場合、ルートディレクトリにファイル「alive_and_well」が作成されます。
そうでない場合、問題は「start on」スタンザにある可能性が最も高いです。そのようなことのために私が使用するものは次のとおりです(動作することがわかっています)。
start on (local-filesystems and net-device-up IFACE!=lo)
stop on runlevel [!2345]
また、Upstartスクリプトのシバンはサポートされていないため、「#!/ bin/bash」は役に立ちません(AFAIK)。
/etc/init.d/
にリストされている他のupstartジョブを見てください。私のシステムでは、これらはすべて/lib/init/upstart-job
へのシンボリックリンクであり、service
コマンドが機能します(Saucyを実行しています)。
service
コマンドを機能させる場合は、同じシンボリックリンクを作成してみてください。
それ以外の場合は、start
、stop
、およびrestart
を直接使用します。
サービスは実行されているように聞こえますが、期待する動作が見られません。特定のユーザーとして、または環境変数を設定して実行する必要がある場合は、それらを指定する必要があります。 dsmcコマンドがPATHにあることを確認するか、コマンドが存在するディレクトリーに変更します。
Upstart Cookbookから: http://upstart.ubuntu.com/cookbook/
環境変数:Upstartでは、ジョブ構成ファイルが定義されているジョブにアクセスできる環境変数を設定できます。環境変数は、envキーワードを使用して設定します。
env ENV_VAR=value
グループIDの設定:ジョブのプロセスを実行する前にグループに変更します。
setgid <groupname>
ユーザーIDの設定:ジョブのプロセスを実行する前にユーザーを変更します。
setuid <username>
ディレクトリの変更:ファイルシステムのルートではなく、指定されたディレクトリ内の作業ディレクトリでジョブのプロセスを実行します。
chdir <directory>