新しいUbuntuシステムでは、システムの起動時にBashスクリプトを自動的に開始しようとしました。
私はたくさんの投稿とそれについてのハウツーを見つけました。だから私はCrontab経由でそれを作ろうとしました:
crontab -e
@reboot /cronjobs/demo.sh >> /cronjobs/cronLogs/demo.output
sudo chmod +x /cronjobs/demo.sh
出力は作成されましたが、スクリプトは実行されません。だから私はrc.local
ファイルで別の解決策を試しました:
sudo vi /etc/rc.local
/cronjobs/demo.sh || exit 1
しかし、私のスクリプトは実行されません。だから私は再起動のためにスクリプトがになければならないことを読みました/etc/rc0.d/
。だから私はこれを試しました:
mv /cronjobs/demo.sh /etc/rc0.d/K99_demo.sh
同じこと-スクリプトは実行されません。
だから、私のエラーは何ですか?スクリプトを実行できないのはなぜですか?を使用./demo.sh
してフォルダに切り替えた後に実行すると、スクリプトを実行できますcd /cronjobs
。スクリプトは、単にフォルダを作成するデモファイルです。
#!/ bin / sh エコーデモ出力 mkdir / cronjobs / demofolder
編集:パスとファイル名を置き換えました。demo.sh
ファイルの全内容を追加
最も簡単な解決策は、sudo powersを使用して、次のようなファイルを作成することです/etc/cron.d/
。
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
@reboot root mkdir /cronjobs
@reboot root sleep 10
@reboot root mkdir /cronjobs/demofolder
これにより、スクリプトファイルの使用が完全に回避され、ホームディレクトリ名(/ home / steve、/ home / maryなど)に関係なく、すべてのユーザーに対して機能します。
sleep 10
何らかの理由で、ディレクトリの作成時にcronの動作が速すぎるか、カーネルの動作が遅すぎます。sleep 10
2mkdir
本の線の間に余分な線が必要でした。
2つのmakedirectoryコマンドの間に10秒は必要ないかもしれませんが、SSDを使用する私のシステムでは10秒で動作します。
以下のコメントによると、より簡単な方法は次のように使用することです。
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
@reboot root mkdir -p -v /cronjobs/demofolder
-p
(長いバージョン--parents
)はmkdir
、すべてのディレクトリ親レベルが存在しない場合、それらを自動的に作成するように指示します。-v
(長いバージョン--verbose
)はmkdir
、作成されたすべてのディレクトリの名前を出力するように指示します。この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加