2つのbashスクリプトがあります。 1 つは root として実行され、もう 1 つは「並列」と呼ばれます。
/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として/root/cronrun.shを実行します。
18:17:28 CET
18:17:29 CET
クローンタブに追加
*/2 * * * * /root/cronrun.sh
したがって、CET 18:20:00にcronを介して実行されます。
今後:
/root/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が問題を解決できませんでした)