두 개의 bash 스크립트가 있습니다. 하나는 루트로 실행되고 다른 사용자는 "병렬"이라고 부릅니다.
/root/cronrun.sh
#! /bin/bash
PARR="thisparameter"
echo "Starting at `date`" >> /root/rlog.log
runuser -l parallels -c "/home/parallels/testscript/newscript.sh $PARR"
echo "Finishing at `date`" >> /root/rlog.log
/home/parallels/testscript/newscript.sh
#! /bin/bash
PARAMM=$1
echo "`date` - newscript.sh ran with $PARAMM" >> /home/parallels/somelog.log
명령줄에서 루트로 /root/cronrun.sh를 실행하세요.
18:17:28 CET
18:17:29 CET
크론탭에 추가
*/2 * * * * /root/cronrun.sh
따라서 CET 18:20:00에 cron을 통해 실행됩니다.
금후:
/루트/rlog.log
Starting at Thu Nov 16 18:17:28 CET 2017
Finishing at Thu Nov 16 18:17:28 CET 2017
Starting at Thu Nov 16 18:17:29 CET 2017
Finishing at Thu Nov 16 18:17:29 CET 2017
Starting at Thu Nov 16 18:20:01 CET 2017
Finishing at Thu Nov 16 18:20:01 CET 2017
/home/parallels/somelog.log
Thu Nov 16 18:17:28 CET 2017 - newscript.sh ran with thisparameter
Thu Nov 16 18:17:29 CET 2017 - newscript.sh ran with thisparameter
따라서 runuser 셸의 에코 로그 항목이 손실됩니다. 왜 가능합니까? 이 경우 cron은 어떻게 다르게 실행되어 "runuser" 명령이 무시되거나 실패하게 됩니까?
(재현된 시스템은 Ubuntu 16.04.3 LTS입니다.)
(crontab의 SHELL=/bin/bash가 문제를 해결하지 못했습니다)