Linux Process management

Linux Process management

  • 进程 process
    • 触发任何一个事件时,系统都会将它定义为一个进程,并且给与这个进程一个ID,称为PID,同时根据触发这个进程的用户和相关属性关系,给与这个PID一组有效的权限设置。
    • 程序被触发后,执行者的权限与属性、程序的代码与所需的数据都会被加载到内存中,操作系统给与这个内存中的单元一个标识符PID
  • 程序 program
    • 通常为二进制程序,放置在存储媒介中,以物理文件的形式存在
  • 父进程 和 子进程
    • 子进程可以获取父进程的环境变量
    • 可通过Parent PID (PPID)来判断某个进程的父进程
    • 关掉有问题的进程时,一定要找到其父进程,擒贼先擒王
    • ps -l 查询相关进程信息
  • 服务 daemon
    • 常驻在内存当中的进程通常都是负责一些系统所提供的功能以服务用户的各项任务
    • 一般daemon(真的不是叫大恶魔么?)类型的进程都会在文件名字后面加上d,比如 httpd、vsftpd
  • 任务管理 job control
    • Bash后台
      • 什么是 job control
        • 登陆系统,获取 bash shell 之后,在单一终端下执行多个任务的操作管理
        • 放入后台的任务在执行时,它必须不能够进行用户交互,且放入后台的任务是不可以用[ctrl]+c来终止的?用什么来终止后台任务?kill咩
        • 可用 bg fg 调用该任务
      • 如何 job control
        • 直接将命令丢到后台中执行 &
          • 不怕被[ctrl]+c中断
          • 完成时会显示 Done
          • 放后台时特别注意数据的流向,如果有输出数据,最佳的状况是利用数据流重新定向,将输出数据传送至某个文件中
            • 输出重定向问题 redirect
              • 正确与错误文件统统写入一个文件中 > out.txt 2>&1
              • 正确和错误文件分别写入不同文件中 > out.txt 1> error.txt 2>
        • 将目前任务丢到后台中暂停 ctrl-z
          • 查看目前后台任务状态 jobs [-lrs]
            • l pid号码
            • r 正在后台run的任务
            • s 在后台中暂停的任务
        • 将后台中任务拿到前台处理 fg
        • 使任务在后台下的状态变为运行中 bg
        • 管理后台中的任务 kill -1 -9直接杀死 -15完成进程
    • 脱机管理
      • 利用at将任务放置到系统后台,使其与终端无关
      • nohup
        • nohup不支持bash内置的命令,命令必须为外部命令才可以
        • nohup [命令与参数] 在终端前台任务
        • nohup [命令与参数] & 在终端后台任务
      • screen 管理远程会话
        • 调用screen
          • screen命令后跟要执行的程序 screen 命令
          • 直接输入screen,形成新的会话界面
        • 暂时中断 detached
          • Ctrl+A D 暂时中断会话
          • screen -ls 寻找会话
          • screen -r id/name 重新连接会话
        • 管理远程会话,只要别杀死screen就可以
        • 退出screen时,exit就可以