我想为我的 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( ),它就会被同样地处理和执行。