2

テキストを単純に書き込んでファイルに保存するPythonスクリプトがあります

#! /usr/bin/python3
def main():
     filename = '/home/user/testHello.txt'
     openfile = open(filename,"w")
     print("Hello CRON", file = openfile)
if __name__ == "__main__":
     main();

CRON経由で起動時にこのスクリプトを実行したい。だから私は使用してcrontabリストを編集します

>crontab -e

私のcrontab全体は次のようになります:

SHELL = /bin/bash
PATH = /sbin:/bin:/usr/sbin:/usr/bin
MAILTO = root
HOME = /
# run-parts
1 * * * * /home/user/tester.py
@reboot /home/user/tester.py

これはファイルの場所であり、ファイルには実行権限があります。コマンドラインからスクリプトとしてファイルを問題なく実行できます。しかし、マシンを再起動しても、ファイルは生成されません。私はその理由を理解しようとしており、crontab エントリをいじってみました。

@reboot /usr/bin/python3 /home/user/tester.py

これもうまくいきませんでした。

編集:

ps aux | grep crond 

私にくれます

user     2259 0.0 0.0.  9436  948 pts/0 S+ 23:39   0:00 grep --color=auto crond

crond が実行されているかどうか、または問題のユーザーが CRON の前後にマウントされているかどうかを確認する方法がわかりません。私は試してみます:

sudo crontab -e 

しかし、それもうまくいきませんでした。

ランニング:

pgrep cron

957を返します

4

4 に答える 4

4

私が今発見したことから、構文は編集@rebootしているものに依存しているようです。crontabシステム レベルの/etc/cron.d/フォルダーの場合、通常の時間ベースの cron と同様に、そこにあるエントリにはユーザーが必要であることがわかりました。

したがって、これはUbuntu 14.04で、起動時に指定されたコマンドをルートとして実行するために機能しました。

@reboot root /home/vagrant/log.sh
于 2014-12-09T16:35:33.357 に答える
3

Mark Roberts は、私が間違ったことをいくつか指摘しました。

つまり、ここのスペース

MAIL = root
HOME = /

それらのスペースを取り除きます..

次に、私が持っていたものではなく、毎分電子メールを送信するように Cron 構成を修正しました。

*/1 * * * * /home/user/tester.py

Lubuntu は @Reboot Cron 構文をサポートしていないようです。

于 2013-08-11T01:03:23.690 に答える
2

@rebootcron ジョブが実行されていないという同様の問題がありました。それが他の誰かを助ける場合:

私にとっての問題は、ホーム ディレクトリが eCryptfs で暗号化されていることです (これは、Ubuntu のインストール時にホーム ディレクトリを暗号化することを選択した場合に得られるものです)。大まかに言えば、これは、ログインするまでホーム ディレクトリの内容を利用できないことを意味しますただし、cron は、@rebootログイン時ではなく、再起動時にジョブを実行します。

于 2016-07-16T10:55:41.937 に答える