新しいユーザージョンを作成しました。さて、ユーザーjohnのcrontabにプログラム的にcronjobを書きたいと思います。
#!/bin/bash
#script name: cronbuild.sh
cronjob1="0 */3 * * * /home/john/ad_dev/modem_dog.sh"
{ crontab -l -u john; echo "$cronjob1"; } | crontab -u john -
今これはジョンのcrontabに書かれています。ただし、スクリプトは次を返します。
tony@rpi:~ $: sudo ./cronbuild.sh
no crontab for user
tony@rpi:~ $
ユーザーjohnのcrontabに記録していることを確認してください...
tony@rpi:~ $: sudo crontab -u john -l
0 */3 * * * /home/john/ad_dev/modem_dog.sh
tony@rpi:~ $:
ターミナルが戻ってくると思います。
ユーザーにcrontabがありません
実際にcrontabがないので…?明白で役に立たないようです。
それで私の質問は、なぜこんなことを言うのでしょうか?ユーザーにcrontabがありません。
ベストアンサー1
crontab -l -u john
このメッセージはスクリプトで使用されるメッセージから来ます。
一方では素晴らしいコマンドを使用します。それを使用する唯一の(?)理由は、以前のcrontabを維持してここに追加することです(単に上書きするわけではありません)。以前のcrontabに保持したい項目が含まれている場合、これは良い決定です。スクリプトを複数回実行する場合(追加の行が累積される)、これは誤った決定になる可能性があります。
一方、あなたはこのメッセージが「当然で役に立たない」と言っていますが、私の考えではあなたのためだと思います。知るユーザーにはまだcrontabがありません。しかし、crontabがないと確信しているなら、crontab -l …
当初は必要ありません。だからおそらくあなたはそれを必要としません。
そのコマンドを使用したという事実は、crontabが存在すると予想されたか、少なくとも許可されているという事実として説明できます。だからそうです合理的な存在しない場合は警告します。これがまさにこのコマンドがすることです。次のアドレスにstderrを送信すると、このメッセージが表示されないことがあります/dev/null
。
{ crontab -l -u john 2>/dev/null; echo …