我需要在使用 FreeBSD 的计算机上启动时运行命令:
cd /home/portal
mv portal.sqlite corrupt_portal.sqlite
这显然不是守护进程或服务,只是每次启动时的一次性命令。
我尝试将 .sh 文件放入 /usr/local/etc/rc.d/ 中,#!/bin/bash
但它没有执行任何操作,我还尝试简单地编写“touch testfile
如果我手动运行两个版本,它们可以正常工作”。
我在这里缺少什么?
答案1
这遥控(8)脚本负责运行自动引导过程,手册的示例部分给出了目录的简单模板/etc/rc.d/
。阅读rc.subr(8)有关编写启动脚本的进一步指导的手册页。
/etc/rc.local
然而,自动引导过程的最后阶段之一是读取名为(如果存在)的脚本文件。该文件不需要特殊的格式或关键字,或执行位集。
从rc(8)
手册页:
通常,现在使用 /usr/local/etc/rc.d/ 机制代替 rc.local,但如果您想使用 rc.local,它仍然受支持。
答案2
最简单的方法是将该命令放入crontab
.
您可以放置特殊标记,而不是通常用星号填充的前五个字段@reboot
@reboot root:wheel /path/to/the/command [args ...]
每次系统重新启动时都会启动此命令。