在 Linux 中调度 autoexec.bat 之类的命令的最干净的方法是什么?

在 Linux 中调度 autoexec.bat 之类的命令的最干净的方法是什么?

我想为我的 Linux 系统创建一个小脚本,它可以在 PC 启动时执行一些简单的操作。该脚本很可能是 Python,但也许我会使用 C 或 shell。

问题是我是一名 Windows 开发人员,网上的教程看起来很可疑。

其中一些关闭所有文件描述符,一些不关闭,一些实现重新启动、强制重新启动,一些则不。后来的似乎违反了规范。然后就是整个 gid 的事情,这让我很困惑。

所以基本上,我不知道哪个脚本库可以用于稳定的守护进程,以及哪些是在我的机器上工作的,所以它是正确的类型。

然后我偶然发现http://manpages.ubuntu.com/manpages/hardy/man1/daemon.1.html这似乎是安全地创建守护进程的官方进程。但话又说回来,如果我理解正确的话,是 init.d 中的脚本执行启动,而不是现有进程。

然后是“nice”,它应该用于长时间运行的任务,如果我做对的话,可能还有其他一些问题。

所以我在这里迷路了。谁能给我一些警告、不该做的事情,或者告诉我在哪里可以在线查找信息?

PS 我要调用的脚本必须调用进程,这是否意味着守护进程将为每个进程分叉?

答案1

方法有很多;我建议使用 cron 特殊字符串@reboot

 $ crontab -e

 @reboot /path/to/my/command.sh

答案2

要在启动时执行脚本,请将脚本文件保存在

/etc/rc#.d/

目录。其中 # 是运行级别。所有系统都支持运行级别 0 到 6。运行级别可以如下:

0: Halt
1: Single User Mode
2: Basic Multi-user mode (No networking)
3: Basic text mode (multiuser)
4: Multi-user mode
5: GUI based multiuser mode
6: Reboot

这些脚本根据其首字母自动启动。开头为的脚本

S: start at system startup
K: start during system shutdown

如果存在通用名称的脚本,例如

S<name>
K<name>

以 K 为前缀的脚本将在以 S 为前缀的脚本之前运行。

答案3

对于基于 Debian 的发行版:

/etc/rc.local

将您的脚本名称放在那里,不要忘记完整路径

答案4

如果您只需要在启动时执行一些操作,最好的办法是添加您自己的 init.d 脚本。一些 cron(例如 fcron)还允许在启动时运行作业。

不管你是用Python还是什么写的都没关系,只要它是ELF或者#!第一行有一个hashbang( ),它就会被同样地处理和执行。

相关内容