网站首页 > 技术文章 正文
起因
自己经常用Typora写东西做记录,有时候想在下班或周末接着写,但是Typora并没有远程同步的功能,所以想写个小工具帮自己做上传同步:服务开机自启动并拉取内容,监听工作库目录有变动则同步到远端。
如果想使用脚本或者快捷命令打开其他软件可以参考推荐一个工作区管理小工具中关于open 命令的描述。
Windows 设置开机自启
可以参考 Windows设置自己的程序开机自动启动
MacOS 设置服务开机自启动
方法1:设置登录项
进入系统偏好设置 -> 用户与群组(账户) -> 登录项
点击下方的+就可以添加登录项,会在开机后自动运行,设置了的开机自启项也会在这里管理。
要注意的是如果使用Node.js脚本作为启动项,需要删除文件后缀并添加可执行权限(否则开机后会使用编辑器打开,而不是执行脚本)。
image-20220116101559735
方法2:扩展坞设置登录打开
扩展坞 -> 选项 -> 登录时打开,但是只能针对安装的应用程序。
方法3: Launchd配置
Launchd是Mac下用于初始化操作系统的关键进程。通过启动硬盘指定目录下的配置文件,来完成启动任务。
目录描述~/Library/LaunchAgents当前用户登陆后启动的服务/Library/LaunchAgents由管理员定义的用户登陆后启动的服务/Library/LaunchDaemons由管理员定义的守护进程任务项/System/Library/LaunchAgentsMacOS系统定义的用户任务项/System/Library/LaunchDaemonsMacOS系统定义的守护进程任务项
plist 配置
比较有用的配置关键字:
标签必填说明Label是标识符,用来表示该任务的唯一性Program是程序名称,用来说明运行哪个程序、脚本ProgramArguments是同上,与Program二选一或一起使用,只是可以运行多个程序、可带参数WatchPaths否监控路径,当路径文件有变化是运行程序,也是数组RunAtLoad否是否在加载的同时启动StartCalendarInterval否运行的时间,单个时间点使用dict,多个时间点使用 array -> dictStartInterval否时间间隔,与StartCalendarInterval使用其一,单位为秒StandardInPath、StandardOutPath、StandardErrorPath否标准的输入输出错误文件,这里建议不要使用.log作为后缀,会打不开里面的信息
PM2设置开机自启
pm2的startup 命令可以设置nodejs脚本开机自启动。pm2的对不同操作系统进行了不同处理:
startup代码
其中对于MacOS的处理也是通过launchd来实现的,会在用户主目录下的Library/LaunchAgents/文件夹中新增一个plist文件:
switch(platform) {
...
case 'macos':
case 'darwin':
case 'launchd':
template = getTemplate('launchd');
destination = path.join(process.env.HOME, 'Library/LaunchAgents/' + launchd_service_name + '.plist');
commands = [
'launchctl load -w ' + destination
]
break;
default:
throw new Error('Unknown platform / init system name');
}
pm2 startup使用的plist模板
参考:
利用 Launchd 定制 Mac 启动任务
Mac下用Launchd实现使用rc.local执行开机启动命令
Mac Launchd 启动任务
[Windows设置自己的程序开机自动启动](
猜你喜欢
- 2024-10-13 Node.js结合uni-app对微信公众号网页开发中的JS-SDK权限验证配置
- 2024-10-13 干货 | Node.js在携程的落地和最佳实践
- 2024-10-13 美国云服务器支持Node.js运行的简单方法
- 2024-10-13 Node.js是什么?怎样快速入门?(node.js百度百科)
- 2024-10-13 2022年,开发独立 EXE 桌面应用程序,用什么语言、技术合适
- 2024-10-13 7个免费、开源且实用的Node包,你还在等什么?
- 2024-10-13 极简Node.js安装(node.js下载安装教程)
- 2024-10-13 Node.js 的安装(node js 安装)
- 2024-10-13 安装ES7.6.1(安装空调)
- 2024-10-13 「前端自动化」如何使用Node.js实现热重载页面
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)