day20 shell编程
信号
对进程发送信号等(kill -9 PID、kill -HUP PID)
常见信号
常见信号
HUP(信号编号1):是 Linux 系统中用于通知进程重新初始化或终止的信号之一。
SIGINT(信号编号 2):通常由用户按下 Ctrl+C 产生,用于中断正在运行的进程。
SIGINT(信号编号 20):通常由用户按下 Ctrl+Z 产生,用于暂停正在运行的进程。
SIGCONT(信号编号 18):用于让暂停的进程继续执行。
SIGKILL(信号编号 9):这是一个强制终止信号,用于立即终止进程,进程无法捕获或忽略该信号。
SIGSEGV(信号编号 11):当进程进行无效的内存访问时,会收到该信号。
SIGCHLD(信号编号 17):当子进程状态发生变化(如终止、暂停等)时,父进程会收到该信号。
捕获信号
trap "echo 识别到信号后执行" INT
接收到INT信号后执行引号中的语句
可以同时捕捉到多个信号
trap "echo " INT HUP QUIT
expect自动交互
yum install expect
!/usr/bin/expect
常用命令
spawn 启动新的进程
expect 从进程中接受字符串
send 用于向进程发送字符串
interact 允许用户交互
expect 运行expect脚本
#!/usr/bin/expect
# 自动连接ssh脚本
set timeout -1 # 设置超时时间永不超时
spawn ssh root@127.0.0.1
expect {
"connecting" {send "yes\n";exp_cotinue} # 执行成功之后继续执行下面的匹配
"pass*ord" {send "1\n"}
} # 同时匹配多个
expect "#"
send "ls\n"
expect eof
bash 运行expect脚本
#!/bin/bash
# 定义变量
user="root"
expect << EOF
expect脚本
EOF
三剑客
grep
grep
egrep
fgrep
grep选项
grep -n 匹配结果中带行号
grep -o 只展示匹配结果
grep -q 静默模式
grep -i 忽略大小写
grep -A 2 输出匹配成功的后两行
grep -B 2 输出匹配成功的前两行
grep -C 2 输出匹配成功的前后两行
grep -rl 'root' 递归匹配带有root的文件
grep -w 'root' 按单词匹配root
awk
awk 格式化输出
awk -F: '{printf "|%-15s|%-10s|%-15s\n",$1,$2,$3}'
systemctl 管理脚本
/usr/lib/systemd/system/ # 开机自启脚本
/usr/lib/systemd/user/ # 登录启动脚本
/usr/lib/systemd/ 目录下存在两种级别文件
*.service # 服务unit文件
*.target # 开机级别unit
格式
# *.service # 服务unit文件 说明
[Unit] # 主要是服务说明
Description=test # 简单描述服务
After=network.target # 描述服务类别,表示本服务需要在network服务启动后在启动
Before=xxx.service #表示需要在某些服务启动之前启动,After和Before字段只涉及启动顺序,不涉及依赖关系。
[Service] # 核心区域
Type=forking # 表示后台运行模式。
User=user # 设置服务运行的用户
Group=user # 设置服务运行的用户组
KillMode=control-group # 定义systemd如何停止服务
PIDFile=/usr/local/test/test.pid # 存放PID的绝对路径
Restart=no # 定义服务进程退出后,systemd的重启方式,默认是不重启
ExecStart=/usr/local/test/bin/startup.sh # 服务启动命令,命令需要绝对路径
PrivateTmp=true # 表示给服务分配独立的临时空间
[Install]
WantedBy=multi-user.target # 多用户

浙公网安备 33010602011771号