自己經常用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設置自己的程序開機自動啟動](
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!