これを開くと、デフォルトのgnome-terminal
Bashシェルが表示されるのではなく、次のようになります。
sh-4.4$
DISPLAY=:0
これを私のファイルに追加して以来、これが起こりcrontab -e
始めました。これで、次のようになります。
DISPLAY=:0
0 0,6,12,18 * * * /usr/bin/gnome-terminal -e /home/orschiro/bin/updates.sh
0 0,6,12,18 * * * /usr/bin/gnome-terminal -e /home/orschiro/bin/rclone.sh
また、興味深い点は次のとおりです。
sh-4.4$ ls -l /bin/sh
lrwxrwxrwx. 1 root root 4 18. Jun 10:30 /bin/sh -> bash
答え1
私はこれがgnome-terminal
cronjobで始まると仮定します。
内部でcronjobスクリプトを実行する必要はありませんgnome-terminal
。これにより、gnome-terminal
ジョブを開くことができない場合、ジョブは失敗します(当時デスクトップを使用していない場合に発生する可能性があります)。
ただ使用
0 0,6,12,18 * * * "$HOME"/bin/updates.sh
0 0,6,12,18 * * * "$HOME"/bin/rclone.sh
ローカル電子メール転送が有効であると仮定すると、スクリプトのすべての出力が電子メールで送信されます。出力をログファイルに保存するには、リダイレクトを使用します。
0 0,6,12,18 * * * "$HOME"/bin/updates.sh >>"$HOME"/updates.log"
0 0,6,12,18 * * * "$HOME"/bin/rclone.sh >>"$HOME"/rclone.log"
cronjobは通常、グラフィカルデスクトップ環境を介してログインしたときとは異なる環境で実行されます。まず、デフォルトのシェルがSHELL
環境変数に設定されていない可能性があります。これがまさに(代わりにgnome-terminal
実行される理由です。/bin/sh
bash
sh
はい bash
システムにあるが)として呼び出されると、POSIX互換モードで実行されますsh
。
グラフィックスデスクトップ環境にログインしている場合は、gnome-terminal
通常どおり開くとデフォルトのシェルが提供されます。そうでない場合は、gnome-terminal-server
cronジョブによって開始されたプロセスが実行中であるためです。を再起動するか、このプロセスを終了してくださいpkill -f gnome-terminal-server
。
また、見ることができます以下はJdeBPが投稿したコメントです。。