• 使用 nohup 与 & 符号配合运行一个命令

    • nohup 命令使进程忽略 hangup (挂起) 信号,并将输出设置为non-tty, 即无/关闭终端也可以运行
  • 守护进程(daemon)和一般进程有什么差别呢?

    • 守护进程的父进程是init/systemd进程,因为它真正的父进程在fork出子进程后就先于子进程exit退出了,所以它是一个由init/systemd继承的孤儿进程

    • 守护进程是非交互式程序,没有控制终端,所以任何输出,无论是向标准输出设备stdout还是标准出错设备stderr的输出都需要特殊处理

    • daemon 进程把它的执行目录切换为根,防止类似与U盘插拔的问题,比如无法卸载u盘

    • 进入到/proc/pid中

      • ls -l cwd: cwd 目录为运行目录

      • ls -l fd: fd目录下

        • 0 表示标准输入
        • 1 表示标准输出
        • 2 表示标准错误输出

        socket 代表套接字,会把输出打印在var、logsshd目录下输出

    • 编写守护进程的一般步骤

      1. 在父进程中执行fork并exit推出
      2. 在子进程中调用selectid函数创建新的会话
      3. 在子进程中调用chdir函数,让根目录“/”成为子进程的工作目录
      4. 在子进程中调用umask函数,设置进程的umake为0
      5. 在子进程中关闭任何不需要的文件描述符

      linux系统编程之进程(八):守护进程详解及创建,daemon()使用

  • 使用 screen 命令: 恢复终端连接

    • screen 进入 screen 环境
    • ctrl + a d 退出(detached)screen环境
    • screen -ls 查看 screen 会话
    • screen -r sessionid 恢复会话