管理开机启动项
mac
Mac 上可以利用 launchctl 来管理开机启动项。
- 在目录 ~/Library/LaunchAgents 或者 /Library/LaunchAgents 下创建 plist 配置文件
- 以 aria2 的服务端进程为例,zyf.aria2.plist 的内容为:
KeepAlive
Label
zyf.aria2
ProgramArguments
/usr/local/bin/aria2c
--enable-rpc
RunAtLoad
- 完成上面的时候,你会在系统桌面通知看到一条 已经添加开机启动项 的通知。此时,你下次登录账号的时候,自定义配置就会生效。也可以立即手动启动:
linux
因为我平时只使用 systemd 管理的 linux 系统。所以这里这里只说怎么使用 systemctl 来管理开机启动项。
这里以和上面 mac 举例相同的 aria2 的服务进程为例来说明。 配置文件名这里我命名为 aria2-server.service
- systemctl 的几个基本的管理命令
- 放置配置文件的目录
- /lib/systemd/system
- /lib/systemd/user
- /etc/systemd/system
- /etc/systemd/user
- ~/.config/systemd/user
除了最后一个用户文件夹的,前面几个目录都是系统级别的。有一些进程需要运行的系统级别比如代理软件 trojan,就需要放置在系统目录里面。
我举例说明的用到的 aria2-server.service 可以运行用户级别。我将它放置在了 ~/.config/systemd/user 目录。
放在这里的配置需要在运行控制指令的时候加上 --user 选项。例如: systemctl --user status aria2-server
- 重载配置 当添加、删除、更新了服务的配置,需要重载才能让 systemd 知道有变化。需要执行指令
windows
windows 提供了很多种管理开机启动项的手段。
- 通过快捷方式启动
使用快捷键 win + r 呼出运行指令窗口,输入 shell::startup 此时文件管理器会打开一个路径为 xxx/程序/启动 的目录。 在这个目录创建一个快捷方式指向你需要启动的程序就可以了。
通过这种方式创建的开机启动项可以在任务管理器的 启动应用 标签页进行管理。
- 通过注册表来添加
在注册表路径: HKEY_CURRENT_UESR\Software\Windows\CurrentVersion\Run 添加字符串类型的值即可。 例如在 win11 上,edge 浏览器为了自己启动快速,添加了一个:
MicrosoftEdgeAutoLaunch: "C:\Program Files (x86)\Microsoft\Edge\Application\msedge" --no-startup-window --win-session-start
通过 edge 的这里例子可以了解到,配置进程路径的时候可以指定命令行参数。程序文件的路径如果有空格需要用双引号包裹。
通过这种方式创建的开机启动项也可以在任务管理器的 启动应用 标签页进行管理。
- 通过计划任务来添加(较简单,不介绍)
- 通过创建服务来添加(需要管理员权限,不介绍)
在 windows 上创建的启动项如果进程自己不支持隐藏窗口,就需要借助一些三方手段来实现。 除了使用 创建服务 的形式来启动其它几种默认都会有一个 cmd 窗口。 为了隐藏这个窗口,可以借助:
- hidexec
- powershell 的 start-process 指令的参数 -WindowStyle Hidden
- vbs (过时了,不介绍)
我个人比较喜欢 powershell 的窗口隐藏模式来启动进程。这种方式启动进程后,父进程会退出更节省内存。 hideexec 会保留 cmd 进程,因此更占内存一点。 附上一段使用 powershell 创建 aria2 服务的例子:
Start-Process -WindowStyle Hidden -FilePath aria2c -ArgumentList '--enable-rpc'