多进程02-bash

143 阅读1分钟

一、解释器文件

解释器是elf程序 解释器文件,文本文件,php代码就是解释器文件

#! /usr/bin/php
<?php
    echo posix_getpid(); // 获取当前进程

二、bash进程启动过程

通过strace 监听进程

  1. sshd 服务守护进程监听 socket select accept
  2. client 连接服务器
  3. sshd 服务获取连接信息,clone sshd进程 用来收发单个连接的数据
  4. 运行bash解释器 execve
  5. bash解析 命令执行
    • execve 根据 文件head 判断是可执行文件还是 解释器文件。
    • 解释器文件就尝试找第一行写的解释器,然后加载解释器程序去运行。

通过strace 监控对应的sshd进程,可以看到数据交互的过程
strace -s -f 6550 -o a.log -p pid

  • 客户端发送指令
  • sshd接受指令并发给子进程bash
  • bash执行并获取结果返回给 sshd execve 获取命令执行,程序或者脚本
  • sshd 返回给客户端