ターミナルを返す:ユーザーにcrontabがありません。

ターミナルを返す:ユーザーにcrontabがありません。

新しいユーザージョンを作成しました。さて、ユーザー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 …

おすすめ記事