在 Linux 中,“进程启动”通常有以下几种方式和原理,下面从用户视角和系统视角分别说明。
./my_program
ls
sleep 10
./my_program &
或
nohup ./my_program > log.txt 2>&1 &
nohup)systemctl start nginx
systemd 启动并管理进程crontab -e
示例:
0 2 * * * /usr/bin/backup.sh
cron 守护进程 fork 新进程fork + exec示例(C 语言):
pid_t pid = fork();
if (pid == 0) {
execl("/bin/ls", "ls", NULL);
}
BIOS/UEFI
↓
GRUB
↓
Linux Kernel
↓
init / systemd (PID 1)
↓
所有其他进程
PID 1 的后代ps -ef
pstree
top
| 方式 | 是否后台 | 是否持久 | 示例 |
|---|---|---|---|
| 终端运行 | 否 | 否 | ./app |
& |
是 | 否 | ./app & |
nohup |
是 | 是 | nohup ./app & |
| systemd | 是 | 是 | systemctl start app |
| cron | 定时 | 否 | crontab |
你可以告诉我:
我可以给你更具体的启动方式或示例。