
ターミナルを介してパッドを介してcrontabを追加する方法に多くの答えを見てみると、どこでも1つのオプションしか見つかりませんでした。
{crontab -l; echo "1 * * * * /usr/bin/firefox" } | crontab -
実行中で、私が受け取るものは
>
それはすべてです。一部のコンテンツを入力するように求められます。
2番目のオプションは
(crontab -l; echo "1 * * * * /usr/bin/firefox" ) | crontab -
これはcronを追加するようですが、毎分/var/spool/cron/crontabs/root
開かず、firefox
実際にはまったく開かれません。
/var/spool/cron/crontabs/root
ほとんどの回答で最も読んだ内容は、自分で編集したり送信したりしないでください/etc/crontab
。
これは私のシステムがサポートしていませんか?
の出力はuname -a
私のシステムの次の説明を提供します。
Linux earth 4.9.0-kali4-amd64 #1 SMP Debian 4.9.30-2kali1 (2017-06-22) x86_64 GNU/Linux
/var/spool/mail/mail
編集:次のメッセージログは私のログで頻繁に繰り返されます。
From [email protected] Sun Jul 09 16:01:12 2017 Return-path: < [email protected] > Envelope-to: [email protected] Delivery-date: Sun, 09 Jul 2017 16:01:12 +0530 Received: from root by earth with local (Exim 4.89) (envelope-from <[email protected]>) id 1dU9UY-0001Ry-3A for [email protected]; Sun, 09 Jul 2017 16:01:06 +0530 From: [email protected] (Cron Daemon) To: [email protected] Subject: Cron <root@earth> /usr/bin/firefox MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Cron-Env: < SHELL=/bin/sh > X-Cron-Env: < HOME=/root > X-Cron-Env: < PATH=/usr/bin:/bin > X-Cron-Env: < LOGNAME=root > Message-Id: < E1dU9UY-0001Ry-3A@earth > Date: Sun, 09 Jul 2017 16:01:06 +0530 Error: GDK_BACKEND does not match available displays
答え1
第二の試みは正確である可能性が高いが、予想は間違っていた。
部分別に見てみましょう。
crontab -l
現在のユーザーのcrontabにあるすべての既存のエントリを一覧表示します。これ
echo "1 * * * * /usr/bin/firefox"
ラインを再印刷するだけです。その後、両方のコマンドがサブシェルに結合され、共通出力が次にパイプされます。
crontab -
したがって、標準入力を介して渡されたコンテンツ(この場合は古いcrontabと新しいエントリ)がcrontabを上書きします。
あなたが言ったように、crontabファイルに追加されます。そして、cronデーモンが実行中であると仮定すると、コマンドは1分ごとに実行されます。
それでは、毎分Firefoxウィンドウを見ませんか? - conrjobはcronデーモンの下の別のシェルで実行されているため、Xセッションにアクセスできないため、Firefoxは失敗し、次の内容を報告します。
(firefox:22376): Gtk-WARNING **: Locale not supported by C library.
Using the fallback 'C' locale.
Error: GDK_BACKEND does not match available displays
そして終了します。このエラーをどのように確認できますか?通常、cronデーモンは電子メールを送信しようとし、/var/spool/mail
最終的にはそれを確認します。
2つの形式について:
{ crontab -l; echo "1 * * * * /usr/bin/firefox" } | crontab -
次のように書く必要があります。
{ crontab -l; echo "1 * * * * /usr/bin/firefox"; } | crontab -
(追加セミコロンに注意してください)
()
との違いは、{}
前者はサブシェルを生成し、後者は同じシェルコンテキストでコマンドを実行することです。したがって、変数の割り当ては1つの形式でのみ存在し、他の形式では存在しません。
答え2
cronジョブから起動しようとすると、firefox-esr
同じエラーが発生します。
DISPLAY
ただし、cronファイルを正しく設定すると役に立ちます。:
* * * * * pi export DISPLAY=:0 && /usr/bin/firefox-esr &
DISPLAY
(数学を通して実際の数字を調べてくださいecho $DISPLAY
。)