FreeBSDを使用しているマシンで、起動時にコマンドを実行する必要があります。
cd /home/portal
mv portal.sqlite corrupt_portal.sqlite
これは明らかにデーモンやサービスではなく、起動ごとに1回だけのコマンドです。
/usr/local/etc/rc.d/内に#!/bin/bash
を使用して.shファイルを配置しようとしましたが、何も実行されません。また、単にtouch testfile
と記述しようとしました。両方のバージョンを実行する場合手動で問題なく動作します。
ここで何が欠けていますか?
rc(8) スクリプトは自動ブートプロセスの実行を担当し、マニュアルのサンプルセクションでは_/etc/rc.d/
_ディレクトリの簡単なテンプレートを提供しています。スタートアップスクリプトの記述に関する詳細なガイダンスについては、 rc.subr(8) マニュアルページを参照してください。
ただし、自動ブートプロセスの最終段階の1つは、_/etc/rc.local
_というスクリプトファイル(存在する場合)を読み取ることです。このファイルには、特別なフォーマットやキーワード、または実行ビットセットは必要ありません。
rc(8)
マニュアルページから:
通常、最近ではrc.localの代わりに/usr/local/etc/rc.d/メカニズムが使用されますが、rc.localを使用したい場合でもサポートされます。
最も簡単な方法は、そのコマンドをcrontab
に置くことです。
通常はアスタリスクで埋められた最初の5つのフィールドの代わりに、特別なトークンを配置できます@reboot
@reboot root:wheel /path/to/the/command [args ...]
このコマンドは、システムが再起動されるたびに起動されます。