1.grep -v grep 去除grep自身占用的进程号,在脚本中常用到,目的就是为了返回想要的唯一进程号
案例脚本:
#!/bin/bash
#Desc 停止jenkins
# 1. 初始化端口号,默认为6380
if [ "x" != "x$1" ] ;
then
port=$1
else
port=6380
fi
# 2. 获取jenkins 运行id
result=`ps -ef | grep jenkins | grep $port | grep -v grep | grep -v /bin/bash `
if [ "x" = "x$result" ] ;
then
echo "No jenkins running on port $port !"
else
echo "Find the running jenkins on port $port:"
echo $result
echo
fi
# 3. 获取jenkins pid
pid=`echo $result | awk -F " " '{print $2}'`
# 4. 杀死jenkins
if [ "x" != "x$pid" ] ;
then
kill -9 $pid
echo "Killed the process: $pid"
fi
2.sudo 普通用户被赋予权限操作root指令
详解: Linux用户配置sudo权限(visudo)_韩帅平的博客-CSDN博客_visudo
3.expect 指令 用来实现远程服务器自动交互功能
详解 :文章正在审核中... - 简书
案例脚本:
#!/bin/bash
#Desc 构建jenkin任务
# 执行测试
java=/opt/app/jdk1.8.0_152/jre/bin/java
jenkins_cli=/opt/app/jenkins/war/jenkins-cli-2.138.2.jar
jenkins_url=http://xx.xxx.xxx.xxx:6380/jenkins
user=xxx
pwd=xxx
# 触发测试任务
$java -jar $jenkins_cli -s $jenkins_url -auth $user:$pwd build $1
[root@vm-kvm12080-app bin]# cat rmt-apachectl.sh
#!/bin/bash
#Desc 远程apache管理命令
# 校验参数
if [ $# -lt 3 ]; then
echo "[error] 命令格式不正确!"
exit 3
fi
# 获取参数
ip=$1
passwd=xxx
signal=$3
user=xx
# 执行远程命令
expect -c "spawn ssh -t $user@$ip sudo /opt/app/apache24/bin/apachectl -k $signal
expect {
*yes/no* { send yes\r; exp_continue }
*password:* { send $passwd\r }
}
interact
exit
"
4.部署微服务应用脚本案例
#声明变量:
run_dir=/opt/app/falcon-ms
tmp_dir=/opt/app/ms-wars/tmp
bk_dir=/opt/app/ms-wars/backup
ms_name=falcon-ms-quartz
log_file=/opt/applog/falcon-ms-logs/falcon-ms-starter/$ms_name.log
java=/opt/app/jdk/jdk1.8.0_181/bin/java
# 停止原来的服务 (printf$2:表示打印第二个字段。 awk '{printf$2}' : 一行一行的读取打印每行的第二个字段。xargs kill -9: 将其接收的进程号杀死)
ps -ef | grep $ms_name | grep -v grep | awk '{printf$2}' | xargs kill -9
# 清理日志(> 输出重定向)
echo "" > $log_file
# 备份
dt=`date +"%Y%m%d"`
mv $run_dir/$ms_name.jar $bk_dir/$ms_name.jar.$dt
# 部署新包
mv $tmp_dir/$ms_name.jar $run_dir
# 启动服务 (>"和“2>" 这两个的结合体就是 ”&>" 结果就是你输入命令,正确和错误信息都不输出在屏幕上直接输到你重定向的一个文件内。)
nohup $java -jar $run_dir/$ms_name.jar &> $log_file &
5.linux 查找应用程序安装目录
如果命令 which 和 whereis 都找不到安装目录,可使用以下办法:
示例: ps -ef|grep redis
得到了进程号 xxxx
然后 ls -l /proc/xxxx/cwd
顺便还可以找到配置文件路径:
示例:locate nginx.conf
6.查看端口占用
netstat -lunup
7.查看日志文件常用指令
# 在/data/reports目录下查询test关键字文件
grep -r "test" /data/reports
# 在/etc/目录下,查找带zcwyou关键词的文件
find /etc/ -type f | xargs grep 'zcwyou'
# 在目录/var/zcwyou里,找到.txt后缀的文件,文件名大小写敏感。即只能匹配.txt后缀的
find /var/zcwyou -name '*.txt'
# grep递归检索指定扩展名的文件内容(grep指定文件后缀名)的语法为:
grep -rn --include='*.后缀名' "检索词"
# linux下如何在.gz包中查找指定内容
gunzip -c file.gz | grep '需要搜索的内容'