Linux进程和线程
思考题:当你用ssh登录到一个linux机器,并且执行了某个hello.sh之后,有哪些进程参与了该过程? linux系统架构 kernel mode user mode 内核态和用户态的区别 什么是进程 进程是运行的程序 process 是对 processor 虚拟化,通过时间片 进程都有uid nginx访问某个目录,Permission denied 进程都有pid $$ 进程都有父进程 准确来说,除了pid为0的进程之外,其他进程都有父进程 有时候,你用kill命令杀死了一个进程,但是立马你就发现这个进程又起来了。你就要看看,这个进程是不是有个非init进程的父进程。一般这个进程负责监控子进程,一旦子进程挂掉,就会去重新创建一个进程。所以你需要找到这个父进程的Id,先把父进程kill掉,然后在kill子进程。 进程是一棵树 #!/bin/bash echo "pid is $$" times=0 while true do sleep 2s; let times++; echo $times hello; done ➜ ~ pstree 24601 sshd─┬─3*[sshd───zsh] ├─sshd───zsh───pstree └─sshd───zsh───world.sh───sleep 进程都有生命周期 创建 销毁 进程都有状态 runing 进程占用CPU, 正在执行指令 ready 进程所有需要的资源都已经就绪,等待进入CPU执行 blocked 进程被某些事件阻断,例如IO。 进程的状态转移图 进程都有打开的文件描述符 使用lsof命令,可以查看某个进程所打开的文件描述符 /proc/pid/fd/目录下也有文件描述符 lsof -c 进程名lsof -p 进程号lsof filename # 查看某个文件被哪个进程打开** [root@localhost ~]# lsof -c rtpproxy COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME rtpproxy 2073 root cwd DIR 253,0 4096 128 / rtpproxy 2073 root rtd DIR 253,0 4096 128 / rtpproxy 2073 root txt REG 253,0 933247 18295252 /usr/local/bin/rtpproxy rtpproxy 2073 root mem REG 253,0 2127336 33617010 /usr/lib64/libc-2....