常用linux命令及shell脚本
2017-06-11 22:28
645 查看
参考:Linux命令大全
按行分割(只能是文本文件)
按文件大小分割
追加文本
逐行合并
通过
简单排序
参数
排序去重(重复的只保留一个)
或
排序去重(重复的一个不留)
更改图片格式
更改图片尺寸
旋转图片
炭笔画效果
内爆效果
批量处理图片
分割大文件
Split命令按行分割(只能是文本文件)
$split -l 1000 big_file 前缀
按文件大小分割
$split -b 64m big_file 前缀
文本合并
#a.txt a b c
#b.txt 1 2 3
追加文本
$cat a.txt >> b.txt
结果: a b c 1 2 3
逐行合并
$ paste a.txt b.txt
结果 a 1 b 2 c 3
通过
-d参数可以制定分隔符额
$paste -d: a.txt b.txt
结果 a:1 b:2 c:3
排序去重
#a.txt 1 2 4 4 3 4
简单排序
$sort a.txt
结果 1 2 3 4 4 4
参数
-n使用数字排序,
-t制定分隔符,
-k制定排序采用的key值,
-r逆序
排序去重(重复的只保留一个)
$sort -u a.ttx
或
$cat a.txt | sort | uniq
结果 1 2 3 4
排序去重(重复的一个不留)
$cat a.txt | sort | uniq -u
结果 1 2 3
处理图片
更改图片格式
$convert a.png [-quality 95] b.jpg
更改图片尺寸
$convert a.png -resize 200×100 b.png #处理为200x100的图片(不精确)
$convert a.png -resize 200×100! b.png #处理为200x100的图片(精确)
$convert a.png -resize 200 b.png #处理为宽为200的图片(保持纵横比)
$convert a.png -resize ×100 b.png #处理为高100的图片(保持纵横比)
旋转图片
$convert a.jpg -rotate 90 b.jpg
炭笔画效果
$convert a.jpg -charcoal 2 b.jpg
内爆效果
$convert a.jpg -implode 1 b.jpg
批量处理图片
$for pic in *.png; do convert $pic -rotate 90 rotated-$pic; done
ssh登录
利用expect自动登录#服务器登陆脚本 # 服务器用户名 ARR_SERVER_USER=( [0]='root' [1]='guest' ) # 服务器IP地址 ARR_SERVER_HOST=( [0]='xx.xx.xx.xx' [1]='xx.xx.xx.xx' ) # 服务器SSH端口号 ARR_SERVER_PORT=( [0]='22' [1]='22' ) # 服务器SSH密码,密钥登陆的值设置为 NULL ARR_SERVER_PASSWORD=( [0]='PASSWORD' [1]=NULL ) # 服务器说明 ARR_SERVER_COMMENT=( [0]='密码登陆' [1]='秘钥登陆' ) # 密钥文件地址. 如果是密钥登陆的话, 值为密钥文件地址. 否则为 NULL ARR_SERVER_KEY=( [0]=NULL [1]='/path/xxx.pem' ) # 统计服务器台数,方便遍历输出 LEN=${#ARR_SERVER_USER[@]} # 屏幕输出提示信息。显示服务器序号、主机地址、说明信息 screen_echo() { printf "%-7s |" '序号' printf "%-18s |" '主机' printf "%-30s\n" '说明' for((i=0; i<$LEN; i++)) do printf "\e[31m %-5s\e[0m|" "$i" # 颜色为红色 printf "%-15s |" "${ARR_SERVER_HOST[$i]}" printf "%-30s\n" "${ARR_SERVER_COMMENT[$i]}" done } # 调用函数,让信息显示出来 screen_echo while true do # 让使用者选择所需要登陆服务器的所属序号 read -p '请输入要登陆的服务器所属序号: ' SERVER_NUM # 如果输入为空格或者回车,显示错误信息,后续代码不再执行,重新循环。 if [ ! ${SERVER_NUM} ] then echo '请输入序号' continue fi # 如果输入的不是数字,显示错误信息,后续代码不再执行,重新循环。 if [[ "${SERVER_NUM}" =~ [^0-9]+ ]] then echo '序号是数字' continue fi # 如果输入的以 0 开头的数字、大于等于服务器台数、小于 0,显示错误信息,后续代码不再执行,重新循环。 if [[ "${SERVER_NUM}" =~ ^0[0-9]+ ]] || [ ${SERVER_NUM} -ge ${LEN} ] || [ ${SERVER_NUM} -lt 0 ] then echo '请输入存在的序号' continue fi # 跳出循环 break done # 登陆的函数 # set timeout 设置超时时间。-1 永不超时 # spawn : -noecho 意思为终端中不显示 spawn .. ssh ... 等信息,不加此参数会有输出; -o StrictHostKeyChecking=no 不提示认证 # $1、$2、$3、$4 代表调用函数是所传输的第一个、第二个、第三个、第四个参数值 # *yes/no* 意思为 ssh 后如果返回的信息当中包含 yes/no,而 *password* 就是代表 ssh 后如果返回的信息当中包含 password # send 意思为发送信息 # exp_continue 意思为继续执行下面的匹配 # interact 意思为留在远程终端上面。如果不写此语句,自动退出服务器 auto_login_ssh () { if [ NULL = $5 ] then expect -c " set timeout 10; spawn -noecho ssh -o StrictHostKeyChecking=no $1@$2 -p $3; expect { *yes/no* { send yes\r exp_continue } *password* { send $4\r } } interact "; else expect -c " set timeout 10; spawn -noecho ssh -o StrictHostKeyChecking=no -i $5 $1@$2; interact "; fi; return 0; } # 调用登陆函数并传值。用户名、地址、端口号、密码 auto_login_ssh ${ARR_SERVER_USER[$SERVER_NUM]} ${ARR_SERVER_HOST[$SERVER_NUM]} ${ARR_SERVER_PORT[$SERVER_NUM]} ${ARR_SERVER_PASSWORD[$SERVER_NUM]} ${ARR_SERVER_KEY[$SERVER_NUM]}
压缩打包/解压缩
根据进程名杀死进程
$ `ps -ef | grep $proc_name | grep -v grep | awk '{print "kill " $2}'` | sh
监控进程(自动重启)
#!/usr/bin/env bash #定时检查指定名称的进程是否存在,若不存在,重新启动 proc_name="程序名称" log_name="./auto_restart.log" pid=0 proc_num() { num=`ps -ef | grep $proc_name | grep -v grep | wc -l` return $num } proc_id() { pid=`ps -ef | grep $proc_name | grep -v grep | awk '{print $2}'` } count=0 while (true) do proc_num number=$? if [ $number -eq 0 ] then #此处填写重启命令 proc_id count=$[count+1] echo $count:'Restart' >> $log_name echo ${pid}:`date` >> $log_name sleep 2m fi done
例行任务
相关文章推荐
- Linux下shell脚本编写:常用命令
- 【shell脚本开发技术】linux中shell script脚本开发编程常用命令与脚本速记指南
- [置顶] linux常用命令与shell脚本编程
- Linux新手生存笔记[10]——shell脚本基础3-函数及常用命令
- linux常用命令 和shell脚本(必知)
- Linux(7) 常用命令扩展 改变用户环境变量 (可以实现登陆就执行shell脚本)
- Linux新手生存笔记[10]——shell脚本基础3-函数及常用命令
- Linux新手生存笔记[10]——shell脚本基础3-函数及常用命令
- Linux常用shell脚本
- [Linux]shell命令的常用快捷键(转)
- Linux常用shell命令——想到一个记一个,都是菜鸟入门命令
- Linux脚本Shell命令
- 常用linux系统命令及简单小脚本
- Linux常用shell命令
- linux强大的查询字符匹配命令和shell脚本
- Linux入门——目录结构、Shell和几个常用命令的简介
- Shell 脚本常用命令
- 脚本的编写和Linux下常用的命令
- [zt] Linux&Shell 常用命令
- linux C程序中获取shell脚本输出(如获取system命令输出)