mac 开机启动
在macOS上,你可以使用launchd
来设置开机自动执行命令。launchd
是macOS的守护进程管理器,它可以在系统启动时或满足特定条件时执行脚本或命令。
以下是设置开机自动执行命令的步骤:
-
创建一个脚本: 创建一个包含你想要执行的命令的脚本文件,例如
startup_script.sh
,并赋予它执行权限:touch ~/startup_script.sh
chmod +x ~/startup_script.sh编辑这个脚本文件,添加你想要自动执行的命令:
#!/bin/bash
echo "Hello, this is my startup command"
# 在这里添加你的命令 -
创建一个
launchd
plist(属性列表)配置文件:launchd
使用属性列表(plist)文件来配置任务。创建一个plist文件,例如com.example.startup.plist
,并填入以下内容:<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.example.startup</string>
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
<string>/Users/yourusername/startup_script.sh</string> <!-- 替换为你的脚本路径 -->
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>请确保替换
<string>/Users/yourusername/startup_script.sh</string>
中的路径为你的脚本实际路径。 -
将plist文件放置在适当的目录: 将创建的plist文件放置在
/Library/LaunchDaemons/
或/Library/LaunchAgents/
目录下。选择哪个目录取决于你希望脚本以哪个用户权限运行:/Library/LaunchDaemons/
:系统级权限,适合系统范围的任务。/Library/LaunchAgents/
:当前用户权限,适 合用户特定的任务。
使用
sudo
命令放置plist文件:sudo cp ~/Desktop/com.example.startup.plist /Library/LaunchDaemons/
-
加载
launchd
作业: 使用launchctl
命令加载你的作业,使其生效:sudo launchctl load -w /Library/LaunchDaemons/com.example.startup.plist
-
重新启动你的Mac: 保存并退出,然后重新启动你的Mac以测试脚本是否按预期执行。
-
(可选)卸载作业: 如果你需要卸载这个作业,可以使用以下命令:
sudo launchctl unload -w /Library/LaunchDaemons/com.example.startup.plist
sudo rm /Library/LaunchDaemons/com.example.startup.plist
请注意,使用launchd
时,务必确保你的脚本路径和权限设置正确,以避免系统启动时出现问题。此外,对于敏感操作或需要管理员权限的命令,请确保理解其含义和潜在的安全风险。
sudo launchctl print system/com.arick.startup
sudo launchctl list com.arick.startup
sudo launchctl start com.arick.startup
1. 使用登录项添加可执行脚本(推荐)
在用户的家目录编写一个sh脚本,例如:
test.sh
**
#!/bin/bash
# 在用户的家目录创建一个文件
touch ~/haha.txt
添加可执行权限
**
chmod 755 test.sh
进入设置
->用户与群组
->登录项
,点+号,选择test.sh文件即可。
重启电脑,验证是否新建了文件,如存在说明配置成功,修改该文件内容为你想要的配置。
该文件将会在开机时执行,可在命令行中执行的开机启动项均可在此文件中配置。
PS: 开机后会显示一个“进程已结束”的终端,不太爽,需要进入终端的
偏好设置
->shell
选项卡->当shell退出时
, 选择“关闭窗口”。这样开机时就不会出现一个终端了