2017-05-13 3 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/ 

.

[Unit] 
Description=backup script 

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

[Install] 
WantedBy=default.target 

가 그럼 난 스크립트에 대한 권한을 설정합니다 :

나는 다음과 같은 systemd 서비스 장치 쓴

chmod 744 PATH/backup.sh 

을 그리고 서비스 설치 : 나는를 다시 부팅 할 때

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

을 스크립트 실패 :

journalctl의 -xe의 691,363,210
● 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

그리고 systemd 작업을 실행하기 위해 재부팅 할 필요가 없다는 것을 기억하십시오. 먼저'systemctl start backup' 작업을 시작하십시오. –

답변

1

해결 된 사람. 2 가지 문제가있었습니다 :

1 - 네트워크가 가동 된 후에 서비스가 실행되도록 서비스 단위 파일을 변경해야했습니다. 단위 섹션으로 변경되었습니다

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

2 - 루트 사용자가 원격 호스트 내가 스크립트를 테스트하는 데 사용되는 일반 사용자와는 달리 알려진 호스트 목록에 추가하지 않았다.