一、进程和线程
1、process 进程
进程就是linux系统上的一个任务资源单位
2、thread 线程
线程就是完成某一项进程的具体实施者
进程是存在存储空间的,在进程的空间内,线程共享这个资源
某一块进程内的内存数据,只能给一个线程使用;别的要用,只能等待上一个结束
线程在使用进程的内存数据时,会针对该内存数据进行锁操作(进线程的互斥锁,mutex ),防止多线程使用同一个进程的内存资源
二、进程管理
1、PS
PS 选项 操作对象 #用于报告当前系统的进程状态的命令
[root@ylinux ~]# psPID TTY TIME CMD1905 pts/0 00:00:00 bash #PID 进程对应的ID号 CMD 当前进程系统命令2213 pts/0 00:00:00 ps #TTY 进程所属的控制台号 TIME 当前使用CPU的总时间[root@ylinux ~]# kill -9 2240 #强制杀死某一个进程
[root@ylinux ~]# ps -ef #显示出linux机器所有详细的进程信息 -e 列出所有的进程 -f 显示详细信息UID PID PPID C STIME TTY TIME CMDroot 1 0 0 12:56 ? 00:00:05 /usr/lib/root 2 0 0 12:56 ? 00:00:00 [kthreaddUID 谁执行这个命令 PID 进程号 PPID 父进程号 C CPU资源百分比STIME 进程开始执行的时间 TIME 该进程的CPU时长
PS命令的两种系统形式PS ef #没有-, e 列出进程信息时,添加每个进程所在的环境变量 f 显示进程之间的关系ps -ef
ps aux # a 当前终端下所有的进程,包括其他用户的进程信息 u 以用户为主的风格显示 x 显示所有的进程[root@ylinux ~]# ps auxUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.2 0.3 193936 6960 ? Ss 12:56 0:05 /usr/lib/systemd/systemd --switched-root --systemroot 2 0.0 0.0 0 0 ? S 12:56 0:00 [kthreadd]VSZ 该进程使用的swap内存单位 RSS 表示进程所占用的内存量STAT 表示进程此时的状态 S 表示终端睡眠中,可以被唤醒 s 表示这个进行有子进程 R 正在运行 D 该进程不能终端睡眠 T 该进程已经停止了 Z 表示该进程为僵尸进程+ 前台进程 N 低优先级进程 < 高优先级进程 L 该进程已经被锁定ps -u root #只显示root用户的进行ps -eo pid #自定义显示的参数格式ps -eH #树形显示进程[root@ylinux ~]# pstree #树形显示进程
2、pgrep
[root@ylinux ~]# pgrep -l ssh #查询某一个进程的进程号,判断该进程是否存活1206 sshd
3、kill
kill -l 列出所有的终止心信号,常用如下:1 SIGHP 挂起进程 2 SIGINT 中断信号,其实就是Ctrl+c3 SIGQUIT 退出信号 ctrl +\ 9 SIGKELL 强制中断信号,立刻杀死某些进程15 SIGTERM 默认使用,终止进程 20 SIGTSTP 暂停进程,可以恢复的哦 Ctrl+z0 特殊信号,用于判断进程是否存在
kill PID #终止进程,或者-9kill -0 $PID #执行结果为0 表示进程存在; 结果为1,不存在echo $? #shell的特殊变量,取出上一次命令的执行结果,为0表示命令正确,不为0都是错误状态码
4、killall
kill 命令只能杀死一个pid进程,通过killall可以直接通过名字杀死进程(有子进程可能要多杀几次)killall vim #杀死所有的vim的进程
5、pkill
pkill也可以通过名字杀死进程,包括父进程和子进程pkill ping #杀死所有的ping进程pkill -9 -t pst/2 #强制杀死某个终端的所有进程,其实就是踢下线
三、nohup
nohup你希望你的程序后台运行,输出结果不打印出来;以忽略挂起信号的形式在后台运行
无论是否将nohup命令的输出重定向到终端,nohup命令执行的输出结果都会写入到当前目录的nohup.out文件中;
如果当前目录的nohup.out文件禁止写入,那么nohup的命令结果会写入到$home/nohup.out文件中
[root@ylinux ~]# nohup ping www.baidu.com #虽然输出重定向到nohup中了,但是前台卡住了;关闭终端进程还在运行nohup: ignoring input and appending output to ‘nohup.out’^C[root@ylinux ~]#使用nohup之后不会直接关闭窗口,而是希望接着使用命令行[root@ylinux ~]# nohup ping e.huawei.com & #结尾加上&就行[1] 2273
四、BG
ping www.baidu.com 然后ctrl+z暂停该进程通过jobs 查看后台任务如果想要前台运行fg +任务号
如果不想让日志输出到前台,可以输出到文件或者黑洞文件中此处有三种方式,可以忽略标准输出(1)和标准错误输出(2)nohup ping baidu.com > /dev/null 2>&1 #将第一种程序执行正确/错误的输出结果,都写入到黑洞文件中nohup ping baidu.com 1>dev/null 2>/dev/null #同上nohup ping baidu.com &>/dev/null #同上
