当前位置: 首页 > 后端技术 > Node.js

设置Node.js脚本开机自动启动

时间:2023-04-03 14:57:30 Node.js

因为我经常用Typora写东西做记录,有时候下班或者周末想继续写,但是Typora没有远程同步的功能,所以想写一个小工具帮我上传同步:服务启动时自动启动并拉取内容,如果监控工作库目录有变化,会同步到远端。如果想使用脚本或者快捷命令打开其他软件,可以参考推荐一个工作区管理小工具中关于打开命令的说明。可以参考Windows设置自己的程序开机自动启动。MacOS设置服务开机自动启动方法一:设置登录项进入系统偏好设置->用户和组(账户)->登录项点击最下方的+号。添加一个登录项会在开机后自动运行,设置好的开机自启动项也会在这里管理。需要注意的是,如果使用Node.js脚本作为启动项,需要删除文件后缀并添加可执行权限(否则开机后会用编辑器打开,而不是执行脚本)。方法二:Dock设置登录打开dock->Options->Openatlogin,但仅限已安装的应用。方法三:Launchd配置Launchd是Mac下用来初始化操作系统的关键进程。通过启动硬盘指定目录下的配置文件完成启动任务。目录说明~/Library/LaunchAgents当前用户登录后启动的服务/Library/LaunchAgents管理员定义的用户登录后启动的服务/Library/LaunchDaemons管理员定义的守护进程任务项/System/Library/LaunchAgentsMacOS系统定义用户任务项/System/Library/LaunchDaemonsMacOS系统定义的守护任务项plist配置。更有用的配置关键字:标签是必需的。标签是用来表示任务唯一性的标识符。Program是一个程序名,用来说明运行哪个程序,脚本ProgramArguments同上,选择一个或者和Program一起使用,但是可以运行多个程序,可以带参数WatchPaths是否监听路径,当路径文件改变时,运行程序,数组RunAtLoad是否加载同时启动StartCalendarInterval没有运行时间,单个时间点使用dict,多个时间点使用array->dictStartInterval没有时间间隔,使用StartCalendarInterval之一,单位为秒StandardInPath,StandardOutPath,StandardErrorPath没有标准的输入输出错误文件,这里建议不要用.log作为后缀,因为里面的信息是打不开的。pm2设置pm2的启动命令可以设置nodejs脚本在开机时自动启动。pm2对不同操作系统的处理方式不同:在启动代码中,对于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=['launchctlload-w'+destination]break;默认值:thrownewError('Unknownplatform/initsystemname');》参考:使用Launchd自定义Mac启动任务Mac下使用Launchd实现开机命令使用rc.localMacLaunchd启动任务Windows设置自己的程序自动启动