Unix Shellスクリプトは、crontabを介して実行された後、それ自体のすべてのトレースを削除します。

Unix Shellスクリプトは、crontabを介して実行された後、それ自体のすべてのトレースを削除します。

私の質問は2つの部分で構成されています。両方の部分にご協力いただきありがとうございます。

提供された情報: - フォルダAとフォルダBという2つのフォルダがあるとします。 - フォルダAには多くのファイルが含まれています。 - フォルダBにはシェルスクリプト(code.sh)が含まれています。

パートA: スクリプトcode.shはフォルダAのすべてのファイルを削除し、スクリプトcode.shを含むフォルダBを削除する必要があります。

パートB: また、crontabを介して特定の時間に予約する必要がありますが、それ自体は問題ではありません。ただし、スクリプトがフォルダAの内容を削除した後は、パートAで説明されているように、crontabからそのエントリを削除してからフォルダBの削除に進む必要があります。

上記の内容は可能ですか?もしそうなら、誰かが私に方法を教えたり、少なくとも正しい方向を教えてもらえますか?私はUNIXを初めて使うので、助けてくれてありがとう。

メモ:全体のプロセス中に、crontabのスクリプト(code.sh)のみを手動でスケジュールできます。

ベストアンサー1

このスクリプトがrootとして実行されている場合は、/var/spool/cron/rootからそのcrontab行を削除してcrontabからエントリを削除できます。 (これが何でcrontab -lあり、crontab -e何のために使用されるかです)。

削除コマンドの最後に次の行を追加します(スクリプト名を{pattern}に変更します)。

sed -i '/{pattern}/d' /var/spool/cron/root

したがって、crontabの実行を入力すると、code.sh良い

0 21 * * * /etc/cron.daily/code.sh

コマンドは次のとおりです。

sed -i '/code.sh/d' /var/spool/cron/root

これにより、ルートcrontabファイルから "code.sh"を含む行が削除されます。

上記の行をスクリプトの最後に追加して、両方のファイルを削除し、crontabからエントリを削除できます。 @Barmarが言ったように、2つのフォルダを一時的に削除できます。

はい、これは非常に古い質問ですが、削除に関する直接の質問です。予約されたこと具体的に答えが必要です。

おすすめ記事