ターミナルウィンドウを開くようにスケジュールされたCron操作によってエラーが発生する

ターミナルウィンドウを開くようにスケジュールされたCron操作によってエラーが発生する

私はAmazon Linuxを実行しています。私のcrontabの設定は次のとおりです。

* * * * * mate-terminal -e run.sh >> output.log 2>&1

出力ファイルに次のエラーが発生します。 Failed to parse arguments: Cannot open display:

私の目標は、cronに新しいターミナルウィンドウを開き、その中でスクリプトを実行させることです。

私は以下を試しました:

  • 現在のユーザーとsudoでcronを実行する
  • 実行するスクリプトの削除* * * * * mate-terminal >> output.log 2>&1

すべての試行に対して出力ファイルに同じエラーが発生します。ありがとう

答え1

端末をペアリングするには、端末が開いているディスプレイを知る必要があります。ほとんどの場合、ディスプレイ0を使用したいが、次のものを使用する必要があります。

echo $DISPLAY

ターミナルで目的のディスプレイに、次にcrontabエントリを次のように設定します。

* * * * * mate-terminal -display :0 -e run.sh >> output.log 2>&1

:0echo出力に置き換えられます。

答え2

あなた本物UI画面にクローンジョブを表示したいですか?それとも、ただ逃げたいですかrun.sh

--displayたとえば、タスクが端末にポップアップされるようにするには、オプションを使用してそのタスクが表示される場所を指定する必要があります。ただし、cronモニターにアクセスしたりアクセスできないユーザーとして実行されているため、これだけでは不十分な場合があります。

単にコマンドを実行したい場合は、これを行うこともできます(シェルを変更する必要があるかもしれませんrun.sh)。

* * * * * /bin/sh -e /full/path/to/run.sh >> /full/path/to/output.log 2>&1

ファイルとスクリプトのフルパスを書き留めます。

関連情報