cron 스크립트: dovecot: 인식할 수 없는 서비스

cron 스크립트: dovecot: 인식할 수 없는 서비스

저는 Let's Encrypt를 사용하여 간단한 쉘 스크립트를 사용하여 60일마다 자동으로 SSL 인증서를 생성합니다.

스크립트는 이를 다시 로드한 후 service postfix reload내가 셸에 입력한 명령(예: - 및 )을 사용하여 내 서비스를 다시 로드 하려고 시도합니다 service dovecot reload.

그러나 첫 번째 서비스는 제대로 실행되지만 service dovecot reload작동하지 않고 인식할 수 없는 서비스에 대해 불평합니다.

스크립트가 cron 작업으로 루트로 실행되므로 루트로 로그인할 때와 동일한 서비스를 모두 인식하기를 원했지만 어떤 이유에서인지 dovecot은 인식되지 않지만 다른 서비스는 문제가 없으므로 Dovecot을 의미합니다. 이전 인증서가 만료되기 전에 수동으로 다시 로드해야 하므로 스크립트의 이점이 제한됩니다!

내 스크립트에서는 인식하지 못하지만 루트로 로그인하면 문제 없이 인식된다는 점에서 dovecot의 차이점은 무엇입니까?

출력 lsb_release -a:

 No LSB modules are available.
 Distributor ID:    Ubuntu
 Description:   Ubuntu 14.04.5 LTS
 Release:   14.04
 Codename:  trusty

출력 ps aux | grep dovecot:

root       860  0.0  0.1  22144  1052 ?        Ss   May09   1:33 /usr/sbin/dovecot -F -c /etc/dovecot/dovecot.conf
dovecot   1466  0.0  0.0   9288   572 ?        S    May09   0:11 dovecot/anvil
vmail    22753  0.0  0.4  23904  4116 ?        S    16:58   0:00 dovecot/imap
vmail    22754  0.0  0.5  25408  5764 ?        S    16:58   0:00 dovecot/imap
dovenull 24108  0.0  0.3  19188  3812 ?        S    Sep26   0:10 dovecot/imap-login
root     24109  0.0  0.1   9416  1472 ?        S    Sep26   0:00 dovecot/log
root     24111  0.0  0.2  23772  2660 ?        S    Sep26   0:01 dovecot/config
vmail    30218  0.0  0.3  23244  3676 ?        S    22:40   0:00 dovecot/imap
vmail    30219  0.0  0.3  23252  3540 ?        S    22:40   0:00 dovecot/imap
root     30293  0.0  0.4  27924  4416 ?        S    22:44   0:00 dovecot/lmtp
dovecot  30294  0.0  0.4  39632  4756 ?        S    22:44   0:00 dovecot/auth
root     30295  0.1  0.4  39728  4900 ?        S    22:44   0:00 dovecot/auth -w

답변1

PATH문제는 cron 스크립트가 기본적으로 다른 값으로 실행되기 때문에 발생하는 것 같습니다 . 예를 들어 Ubuntu에서는 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin기본적으로 PATH에 루트가 있습니다. 그러나 루트로 실행되는 cron 스크립트는 PATH 값이 더 제한되어 있습니다 /usr/bin:/bin.

PATHcron 스크립트 상단에 환경 변수를 설정하는 것이 좋습니다.

PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'

이 특별한 경우 문제는 cron에서 사용하는 PATH에 없는 service사용된 스크립트 (Upstart)에 있습니다. /sbin/initctl명령이 실패하면 기존 스크립트를 사용하려고 시도합니다 /etc/init.d/${SERVICE}. 그러나 모든 서비스에 레거시 스크립트가 포함되어 있는 것은 아닙니다. 따라서 스크립트가 일부 서비스에서는 작동하지만 다른 서비스에서는 작동하지 않는 것입니다.

관련 정보