shell和进程管理

bash shell

Bash 是shell的类型之一

Shell的类型:csh、tsh、ksh、bash

image-20220402202231128

历史记录history

history命令

-c 清空历史命令(缓存中的)

-w 将缓存中的历史命令写入历史命令保存文件

.bash_history 存放历史命令

通配符

通配符 解释
* 匹配0或多个字符
? 匹配任意1个字符
[0-9] 匹配0-9范围内的数字
[abc] 匹配该列表内的任意字符
[^abc] 不匹配列表内的任意字符
[:alpha:] 匹配字母
[:lower:] [:upper:] 小写、大写字母
[:digit:] 数字
[:space:] 空格
[:alnum:] 任意字母或数字
[:punct:] 除空格、字母、数字以外的任何可打印字符

变量

局部变量和全局变量

  • set :当前shell中生效的所有变量,包括环境变量
  • env: 当前shell中生效的所有环境变量
  • unset: 取消变量,unset 变量名

别名alias

简化命令

cp -r /etc/   /tmp/etc-$(date + '%F-%T')
#定义别名
alias  copy='cp -r /etc/   /tmp/etc-$(date + '%F-%T')'
#取消别名
unalias   copy
alias  查看所有别名

引号和反斜杠

引号和反斜杠都可以用来转义

  • 单引号:所有都转义
  • 双引号:$, ``,,! 不能转义,其他都转义

环境变量和本地变量

  • 本地变量:仅在当前shell中生效的变量,用户自定义变量

  • 环境变量: 在当前shell和子shell中生效的变量,系统配置环境变量

    ​ 定义环境变量:export 变量名

变量的配置文件

文件 定义
/etc/profile 定义全局环境变量,针对所有用户生效
~/.bash_profile 定义用户环境
/etc/bashrc 定义全局变量,所有用户生效
~/.bashrc 定义用户的变量
~/.bash_logout 退出触发,登出shell

登录shell和非登录shell

  • 登录shell

登录用户、su - 切换用户

读取上面四个文件

读取顺序:

/etc/profile

/etc/bashrc

~/.bashrc

~/.bash_profile

  • 非登录shell

su bash,执行脚本,打开伪终端

读取/etc/bashrc ~/.bashrc

进程管理

进程id,PID,唯一,进程也要匹配权限

7版本以前 init管理 以后systemd管理

孤儿进程:父进程异常结束,被PID为1的管理

僵尸进程:子进程想要结束,但是父进程没有反馈,导致子进程仍保存在系统中

ps命令

-a	查看所有终端的进程
-u	打印进程的详细信息,包裹进程的拥有人,使用百分比
-x	打印不属于任何终端的进程
-e	所有进程 包括终端和非终端的
-f	额外信息    ef组合用
-o	指定输出信息格式		ps -axo  pid,user,command
--sort	指定排序参数   支持升/降序+/-  ps aux --sort=-%mem

ps 信息解释

第一列:进程的拥有人,一般情况谁运行该进程,拥有人就是谁

第二列:pid进程id,不是唯一,每重启一次pid重新分配

第三列和第四列:cpu和内存的使用百分比

第五列:VSZ 虚拟内存 ,应用程序申请的内存

第六列:RSS实际使用的内存 应用程序实际使用的内存

第七列:tty,进程运行的终端 ctrl+f123456 tty1 tty2 tty3

​ pts伪终端:图形界面打开的终端或者远程登录的终端

​ ?: 不属于任何终端

​ 终端:用户登录时才会分配终端,当终端关闭时,该终端上的任务也会随之关闭

第八列:STAT 进程的运行状态

第九列:进程开启的时间

第十列:进程上一次持续运行的时间

第十一列:进程的命令或者进程名

进程状态

image-20220403103028172

top命令

image-20220403104626860

选项

d	指定屏幕刷新时间间隔		top-d 4
p	通过指定监控进程id来监控某个进程的状态 -p pid

top命令支持一些交互命令

c 切换详细信息
M	按照内存占用情况进行排序
P	按照CPU百分比
T	安装累计时间进行排序
f	选择显示内容
k	杀死进程	
r	renice

pgrep过滤进程

pgrep 通过程序的名字来查询进程

选项
-U:	查找某个用户的进程id
-G:	查找某个组的进程id
-P:	根据父进程ID,查找所有子进程id
-l	打印进程名
-o	程序先启动的进程的pid,即父pid
-n		后启动的进程pid
-d	定义多个进程之间的分隔符,默认换行符

kill

进程的通信:通过信号......套接字

kill通过手动发送信号操作进程。

  • kill -l 查看信号
15  正常结束,默认值,让进程自己结束
9	强制结束,终端或者内核将进程结束。
1	重新加载配置文件
19	将进程后台暂停

kill -15 pid

  • killall 进程名
  • pkill 和pgrep语法类似 过滤出进程并发送信号

nice值

nice值范围 -20-19 数值越大优先级越低

nice -n 19 vim 1.txt 启动时设置优先级

renice -n 5 pid 修改优先级

job任务控制

jobs查看当前终端的后台任务

vim 1.txt & 将任务放到后台运行

fg %jobnum 将后台进程放在前台运行

bg %jobnum (恢复)后台运行

kill -15 %jobnum

pidof

pstree

posted @ 2023-05-09 16:36  loser_xu  阅读(37)  评论(0编辑  收藏  举报