📓 Archive

LAUNCHCTL

FGJ: Create:2023/05/16 Update: [2025-01-01]

  • launchctl #

    简单解释,launchd是一套统一的开源服务管理框架,它用于启动、停止以及管理后台程序、应用程序、进程和脚本。launchd是macOS第一个启动的进程,该进程的PID为1,整个系统的其他进程都是它创建的。

    1). 当launchd启动后,它会扫描/System/Library/LaunchDaemons/Library/LaunchDaemons中的plist文件并加载他们;
    2). 当输入密码登录系统后,launchd会扫描/System/Library/LaunchdAgents/Library/LaunchAgents~/Library/LaunchAgents这三个目录中的plist文件并加载它们。每个plist文件都是一个任务,加载不代表立即运行,只有设置了RunAtLoad为true或keepAlive为true时,才会加载并同时启动这些任务。

    nameope
    帮助launchctl help
    列出所有由launchd管理的进程launchctl list
    加载launchctl load ~/Library/LaunchAgents/docs.wtfu.site.plist
    卸载launchctl unload ~/Library/LaunchAgents/docs.wtfu.site.plist
    启动 (luanchctl start <Label>)launchctl start dos.wtfu.site
    关闭launchctl stop dos.wtfu.site
    • restart #

      摘自 How to start/stop/restart launchd services from the command line?
      Just in case if you are looking for launchctl reload, you can define shell function in your ~/.bashrc/.zshrc as I did:
      Command execution looks like -> lctl reload <your-plist-name>.plist

      function lctl {
          COMMAND=$1
          PLIST_FILE=$2
          if [ "$COMMAND" = "reload" ] && [ -n "$PLIST_FILE" ]
          then
              echo "reloading ${PLIST_FILE}.."
              launchctl unload ${PLIST_FILE}
              launchctl load ${PLIST_FILE}
          else
              echo "either command not specified or plist file is not defined"
          fi
      }
      
    • plist #

      path: ~/Library/LaunchAgents/docs.wtfu.site.plist

      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
      <plist version="1.0">
          <dict>
              <key>Label</key>
              <string>docs.wtfu.site</string>
              <key>ProgramArguments</key>
              <array>
                  <string>sh</string>
                  <string>-c</string>
                  <string>cd ~/Desktop/knownledges/ &amp;&amp; docsify serve .</string>
              </array>
              <key>RunAtLoad</key>
              <true/>
              <key>EnvironmentVariables</key>
              <dict>
                  <key>PATH</key>
                  <string>/usr/local/bin</string>
                  <!-- <string>/usr/local/bin:/usr/local/opt/node@18/bin</string> -->
              </dict>
              <key>StandardOutPath</key>
              <string>/tmp/docs.wtfu.site.log</string>
              <key>StandardErrorPath</key>
              <string>/tmp/docs.wtfu.site.err</string>
          </dict>
      </plist>
      

      path: ~/Library/LaunchAgents/tech.wtfu.site.plist

      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
      <plist version="1.0">
          <dict>
              <key>Label</key>
              <string>tech.wtfu.site</string>
              <key>ProgramArguments</key>
              <array>
                  <string>sh</string>
                  <string>-c</string>
                  <string>cd ~/Desktop/archive/archive-hugo &amp;&amp; rm -rf public &amp;&amp; hugo server -D </string>
              </array>
              <key>RunAtLoad</key>
              <true/>
              <key>EnvironmentVariables</key>
              <dict>
                  <key>PATH</key>
                  <string>~/.go/bin:/bin:/usr/local/bin</string>
                  <!-- <string>/usr/local/bin:/usr/local/opt/node@18/bin</string> -->
              </dict>
              <key>StandardOutPath</key>
              <string>/tmp/tech.wtfu.site.log</string>
              <key>StandardErrorPath</key>
              <string>/tmp/tech.wtfu.site.err</string>
          </dict>
      </plist>
      

      path: ~/Library/LaunchAgents/frp.wtfu.site.plist

      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
      <plist version="1.0">
          <dict>
              <key>Label</key>
              <string>frpc.wtfu.site</string>
              <key>ProgramArguments</key>
              <array>
                  <string>sh</string>
                  <string>-c</string>
                  <string>~/Desktop/frp_0.34.1_darwin_amd64/frpc -c ~/Desktop/frp_0.34.1_darwin_amd64/frpc.ini </string>
              </array>
              <key>RunAtLoad</key>
              <true/>
              <key>EnvironmentVariables</key>
              <dict>
                  <key>PATH</key>
                  <string>/usr/local/bin:/usr/local/opt/node@18/bin</string>
              </dict>
              <key>StandardOutPath</key>
              <string>/tmp/frpc.wtfu.site.log</string>
              <key>StandardErrorPath</key>
              <string>/tmp/frpc.wtfu.site.err</string>
          </dict>
      </plist>
      

      path: ~/Library/LaunchAgents/jetbrains.vmoptions.plist

      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
      <plist version="1.0">
          <dict>
              <key>Label</key>
              <string>jetbrains.vmoptions</string>
              <key>ProgramArguments</key>
              <array>
                  <string>sh</string>
                  <string>-c</string>
                  <string>
                  launchctl setenv "IDEA_VM_OPTIONS" "/Users/stevenobelia/Downloads/install-package/jetbra/vmoptions/idea.vmoptions"
                  launchctl setenv "CLION_VM_OPTIONS" "/Users/stevenobelia/Downloads/install-package/jetbra/vmoptions/clion.vmoptions"
                  launchctl setenv "PHPSTORM_VM_OPTIONS" "/Users/stevenobelia/Downloads/install-package/jetbra/vmoptions/phpstorm.vmoptions"
                  launchctl setenv "GOLAND_VM_OPTIONS" "/Users/stevenobelia/Downloads/install-package/jetbra/vmoptions/goland.vmoptions"
                  launchctl setenv "PYCHARM_VM_OPTIONS" "/Users/stevenobelia/Downloads/install-package/jetbra/vmoptions/pycharm.vmoptions"
                  launchctl setenv "WEBSTORM_VM_OPTIONS" "/Users/stevenobelia/Downloads/install-package/jetbra/vmoptions/webstorm.vmoptions"
                  launchctl setenv "WEBIDE_VM_OPTIONS" "/Users/stevenobelia/Downloads/install-package/jetbra/vmoptions/webide.vmoptions"
                  launchctl setenv "RIDER_VM_OPTIONS" "/Users/stevenobelia/Downloads/install-package/jetbra/vmoptions/rider.vmoptions"
                  launchctl setenv "DATAGRIP_VM_OPTIONS" "/Users/stevenobelia/Downloads/install-package/jetbra/vmoptions/datagrip.vmoptions"
                  launchctl setenv "RUBYMINE_VM_OPTIONS" "/Users/stevenobelia/Downloads/install-package/jetbra/vmoptions/rubymine.vmoptions"
                  launchctl setenv "DATASPELL_VM_OPTIONS" "/Users/stevenobelia/Downloads/install-package/jetbra/vmoptions/dataspell.vmoptions"
                  launchctl setenv "AQUA_VM_OPTIONS" "/Users/stevenobelia/Downloads/install-package/jetbra/vmoptions/aqua.vmoptions"
                  launchctl setenv "RUSTROVER_VM_OPTIONS" "/Users/stevenobelia/Downloads/install-package/jetbra/vmoptions/rustrover.vmoptions"
                  launchctl setenv "GATEWAY_VM_OPTIONS" "/Users/stevenobelia/Downloads/install-package/jetbra/vmoptions/gateway.vmoptions"
                  launchctl setenv "JETBRAINS_CLIENT_VM_OPTIONS" "/Users/stevenobelia/Downloads/install-package/jetbra/vmoptions/jetbrains_client.vmoptions"
                  launchctl setenv "JETBRAINSCLIENT_VM_OPTIONS" "/Users/stevenobelia/Downloads/install-package/jetbra/vmoptions/jetbrainsclient.vmoptions"
                  launchctl setenv "STUDIO_VM_OPTIONS" "/Users/stevenobelia/Downloads/install-package/jetbra/vmoptions/studio.vmoptions"
                  launchctl setenv "DEVECOSTUDIO_VM_OPTIONS" "/Users/stevenobelia/Downloads/install-package/jetbra/vmoptions/devecostudio.vmoptions"
                  </string>
              </array>
              <key>RunAtLoad</key>
              <true/>
              <key>StandardOutPath</key>
              <string>/tmp/jetbrains.vmoptions.log</string>
              <key>StandardErrorPath</key>
              <string>/tmp/jetbrains.vmoptions.err</string>
          </dict>
      </plist>
      

      path: /System/Library/LaunchDaemons/ssh.plist

      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
      <plist version="1.0">
          <dict>
              <key>Disabled</key>
              <true/>
              <key>Label</key>
              <string>com.openssh.sshd</string>
              <key>Program</key>
              <string>/usr/libexec/sshd-keygen-wrapper</string>
              <key>ProgramArguments</key>
              <array>
                  <string>sshd-keygen-wrapper</string>
              </array>
              <key>Sockets</key>
              <dict>
                  <key>Listeners</key>
                  <dict>
                      <key>SockServiceName</key>
                      <string>ssh</string>
                      <key>Bonjour</key>
                      <array>
                          <string>ssh</string>
                          <string>sftp-ssh</string>
                      </array>
                  </dict>
              </dict>
              <key>inetdCompatibility</key>
              <dict>
                  <key>Wait</key>
                  <false/>
                  <key>Instances</key>
                  <integer>42</integer>
              </dict>
              <key>StandardErrorPath</key>
              <string>/dev/null</string>
              <key>SHAuthorizationRight</key>
              <string>system.preferences</string>
              <key>POSIXSpawnType</key>
              <string>Interactive</string>
              <key>MaterializeDatalessFiles</key>
              <true/>
          </dict>
      </plist>
      
  • reload #

    alias reload='source ~/.zshrc \!:1'
    
    # Path to your oh-my-zsh installation.
    export ZSH="/Users/stevenobelia/.oh-my-zsh"
    export RANGER_LOAD_DEFAULT_RC=FALSE
    
    if [ $# -eq 2 ]; then
        ZSH_THEME=$2
    else
        ZSH_THEME="random"
    fi
    plugins=(git)
    
    source $ZSH/oh-my-zsh.sh
    source ~/.bash_profile
    source /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
    export PATH="/usr/local/opt/ruby/bin:$PATH"
    #export PATH="/usr/local/lib/ruby/gems/3.1.0/bin:$PATH"
    ___MY_VMOPTIONS_SHELL_FILE="${HOME}/.jetbrains.vmoptions.sh"; if [ -f "${___MY_VMOPTIONS_SHELL_FILE}" ]; then . "${___MY_VMOPTIONS_SHELL_FILE}"; fi
    
  • Reference #


comments powered by Disqus