我有一个要在 Linux 启动时运行的脚本,我知道 Windows 有一个启动文件夹,Linux 也有一个。我做了一些研究,发现了各种文件,其中有许多相互矛盾的答案。路径:
/etc/systemd/system
Run Code Online (Sandbox Code Playgroud)
似乎被使用了。另一种是:
/etc/rc.local
Run Code Online (Sandbox Code Playgroud)
我还看到:
/etc/init.d
Run Code Online (Sandbox Code Playgroud)
我只想要在所有或至少大多数 Linux 发行版上存在的 Linux 等效的 Windows 启动文件夹的路径。我还希望能够在该目录中放置一个脚本以使其在启动时运行。什么路径可以满足这些要求。
大多数形式的自动启动取决于您的安装:您使用的初始化系统(sysv vs systemd vs upstart)、您的桌面环境(GNOME/KDE vs 非 XDG 的)等。
Cron 存在于大多数 Linux 系统上,可用于自动启动。添加一行到您的/etc/crontab:
@reboot /usr/bin/blah
Run Code Online (Sandbox Code Playgroud)
/usr/bin/blah您要运行的命令在哪里。
如果您希望程序在您登录时启动,并且您使用的是符合 XDG 的桌面环境(例如 GNOME 或 KDE),请将.desktop文件放入~/.config/autostart. 有关.desktop文件的示例,请参阅Arch wiki。
或者,如果您的 Linux 发行版使用 systemd,您可以编写一个单元文件。例如:
[Unit]
Description=autostart something
[Service]
Type=oneshot
ExecStart=/usr/bin/blah
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
将上面的文本放入/etc/systemd/system/blah.service并systemctl daemon-reload以root身份运行以注册服务。接下来,运行systemctl enable blah.service以启用新服务的自动启动。
有关如何编写 systemd 单元文件的详细信息,请参阅此链接。