web-dev-qa-db-ja.com

FreeBSDの起動時に簡単なコマンドを実行する方法は?

FreeBSDを使用しているマシンで、起動時にコマンドを実行する必要があります。

cd /home/portal
mv portal.sqlite corrupt_portal.sqlite

これは明らかにデーモンやサービスではなく、起動ごとに1回だけのコマンドです。

/usr/local/etc/rc.d/内に#!/bin/bashを使用して.shファイルを配置しようとしましたが、何も実行されません。また、単にtouch testfileと記述しようとしました。両方のバージョンを実行する場合手動で問題なく動作します。

ここで何が欠けていますか?

4

rc(8) スクリプトは自動ブートプロセスの実行を担当し、マニュアルのサンプルセクションでは_/etc/rc.d/_ディレクトリの簡単なテンプレートを提供しています。スタートアップスクリプトの記述に関する詳細なガイダンスについては、 rc.subr(8) マニュアルページを参照してください。

ただし、自動ブートプロセスの最終段階の1つは、_/etc/rc.local_というスクリプトファイル(存在する場合)を読み取ることです。このファイルには、特別なフォーマットやキーワード、または実行ビットセットは必要ありません。

rc(8)マニュアルページから:

通常、最近ではrc.localの代わりに/usr/local/etc/rc.d/メカニズムが使用されますが、rc.localを使用したい場合でもサポートされます。

5
Richard Smith

最も簡単な方法は、そのコマンドをcrontabに置くことです。
通常はアスタリスクで埋められた最初の5つのフィールドの代わりに、特別なトークンを配置できます@reboot

@reboot root:wheel /path/to/the/command [args ...] 

このコマンドは、システムが再起動されるたびに起動されます。

1
Kondybas