起因

本人常常用Typora写货色做记录,有时候想在上班或周末接着写,然而Typora并没有近程同步的性能,所以想写个小工具帮本人做上传同步:服务开机自启动并拉取内容,监听工作库目录有变动则同步到远端。

如果想应用脚本或者快捷命令关上其他软件能够参考举荐一个工作区治理小工具中对于open 命令的形容。

Windows 设置开机自启

能够参考 Windows设置本人的程序开机主动启动

MacOS 设置服务开机自启动

办法1:设置登录项

进入零碎偏好设置 -> 用户与群组(账户) -> 登录项

点击下方的+就能够增加登录项,会在开机后主动运行,设置了的开机自启项也会在这里治理。

要留神的是如果应用Node.js脚本作为启动项,须要删除文件后缀并增加可执行权限(否则开机后会应用编辑器关上,而不是执行脚本)。

办法2:扩大坞设置登录关上

扩大坞 -> 选项 -> 登录时关上,然而只能针对装置的应用程序。

办法3: Launchd配置

LaunchdMac下用于初始化操作系统的要害过程。通过启动硬盘指定目录下的配置文件,来实现启动工作。

目录形容
~/Library/LaunchAgents以后用户登陆后启动的服务
/Library/LaunchAgents由管理员定义的用户登陆后启动的服务
/Library/LaunchDaemons由管理员定义的守护过程工作项
/System/Library/LaunchAgentsMacOS零碎定义的用户工作项
/System/Library/LaunchDaemonsMacOS零碎定义的守护过程工作项
plist 配置

比拟有用的配置关键字:

标签必填阐明
Label标识符,用来示意该工作的唯一性
Program程序名称,用来阐明运行哪个程序、脚本
ProgramArguments同上,与Program二选一或一起应用,只是能够运行多个程序、可带参数
WatchPaths监控门路,当门路文件有变动是运行程序,也是数组
RunAtLoad是否在加载的同时启动
StartCalendarInterval运行的工夫,单个工夫点应用dict,多个工夫点应用 array -> dict
StartInterval工夫距离,与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设置本人的程序开机主动启动