我有一台运行 Fedora OS 的虚拟机。假设该虚拟机有四个用户(A、B、C、D)。该虚拟机在每个用户下运行一个进程。因此,当该虚拟机重新启动时,我应该怎么做才能让这些进程在相应的用户下自动启动。
前提是
a 是在 A 用户下启动进程的自定义命令
b 是在 B 用户下启动进程的自定义命令
c 是在 C 用户下启动进程的自定义命令
d 是在 D 用户下启动进程的自定义命令
a、b、c、d 是 root 用户无法使用的命令。它们仅对相应的用户可用。
谢谢
答案1
为进程创建单独的 Systemd 初始化脚本。对于进程 A,创建文件/etc/systemd/system/A.service
并向其中添加类似以下内容:
[Unit]
Description=Process A
After=network.target
[Service]
User=userA
Type=forking
ExecStart=/some/command/to/run --arg1 --arg2
Restart=on-failure
StartLimitInterval=5min
StartLimitBurst=4
[Install]
WantedBy=multi-user.target
根据需要自定义(Restart、StartLimitInterval、StartLimitBurst 等...)
然后启用它
systemctl enable A.service
并开始
systemctl start A.service
答案2
您可以使用 /etc/crontab 和 @reboot 时间吗?/etc/crontab 的格式在时间指定后采用用户名,并以该用户身份运行进程。
@reboot A /path/to/a
@reboot B /path/tob
等等。