2017-05-13 18 views
0

Debian 9のシステム起動時にスクリプトを実行したい。私のスクリプトはスタンドアローンで動作しますが、systemdでは失敗します。Systemdスクリプトが失敗する

私のスクリプトだけコピーローカルマシンにリモートサーバからのバックアップファイル:私は上記のパスワード、ユーザー、およびパスを置き換えるだけでプライバシー保護のため

#!/bin/sh 
set -e 

/usr/bin/sshpass -p "PASSWORD" /usr/bin/scp -p [email protected]:ORIGINPATH/backupserver.zip DESTINATIONPATH/backupserver/ 

私は、次にsystemdサービスユニットを書いた:

[Unit] 
Description=backup script 

[Service] 
Type=oneshot 
ExecStart=PATH/backup.sh 

[Install] 
WantedBy=default.target 

それから私は、スクリプトのパーミッションを設定します。

chmod 744 PATH/backup.sh 

とサービスをインストール:

chmod 664 /etc/systemd/system/backup.service 
systemctl daemon-reload 
systemctl enable backup.service 

私が再起動するとスクリプトが失敗する:

journalctl -xeの
● backup.service - backup script 
    Loaded: loaded (/etc/systemd/system/backup.service; enabled; vendor preset: enabled) 
    Active: failed (Result: exit-code) since Sat 2017-05-13 13:39:54 -03; 47min ago 
Main PID: 591 (code=exited, status=1/FAILURE) 

結果:間違っている可能性が何

mai 16 23:34:27 rodrigo-acer systemd[1]: backup.service: Main process exited, code=exited, status=6/NOTCONFIGURED 
mai 16 23:34:27 rodrigo-acer systemd[1]: Failed to start backup script. 
mai 16 23:34:27 rodrigo-acer systemd[1]: backup.service: Unit entered failed state. 
mai 16 23:34:27 rodrigo-acer systemd[1]: backup.service: Failed with result 'exit-code'. 

+0

プログラミングに関する質問ではありませんか? –

+1

systemdジャーナルにすべての出力が記録されている必要があります。 'journalctl -u backup'を試してください –

+1

そして、システムドジョブを実行するために再起動する必要はありません。最初に 'systemctl start backup'で作業してください。 –

答えて

1

解決済みの人。

1 - サービスユニットファイルを変更して、ネットワークが稼働した後にのみサービスを実行する必要がありました。ユニット部は、に変更されました:

[Unit] 
Description = World server backup 
Wants = network-online.target 
After = network.target network-online.target 

2 - rootユーザーはリモートホストが、私は、スクリプトをテストするために使用される一般ユーザとは異なり、既知ホストリストに追加されていませんでした。

関連する問題