乐趣区

关于node.js:设置Nodejs脚本开机自启动

起因

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

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

Windows 设置开机自启

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

MacOS 设置服务开机自启动

办法 1:设置登录项

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

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

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

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

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

办法 3:Launchd 配置

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

目录 形容
~/Library/LaunchAgents 以后用户登陆后启动的服务
/Library/LaunchAgents 由管理员定义的用户登陆后启动的服务
/Library/LaunchDaemons 由管理员定义的守护过程工作项
/System/Library/LaunchAgents MacOS 零碎定义的用户工作项
/System/Library/LaunchDaemons MacOS 零碎定义的守护过程工作项
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 设置本人的程序开机主动启动

退出移动版