博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
常用linux命令及shell脚本
阅读量:5939 次
发布时间:2019-06-19

本文共 3991 字,大约阅读时间需要 13 分钟。

参考:

分割大文件

  • 按行分割(只能是文本文件)
$split -l 1000 big_file  前缀
  • 按文件大小分割
$split -b 64m big_file 前缀

文本合并

#a.txtabc
#b.txt123
  • 追加文本
$cat a.txt >> b.txt
结果:abc123
  • 逐行合并
$ paste a.txt b.txt
结果a 1b 2c 3

通过-d参数可以制定分隔符额

$paste -d: a.txt  b.txt
结果a:1b:2c:3

排序去重

#a.txt124434
  • 简单排序
$sort a.txt
结果123444

参数-n使用数字排序,-t制定分隔符,-k制定排序采用的key值,-r逆序

  • 排序去重(重复的只保留一个)
$sort -u a.ttx

$cat a.txt | sort | uniq
结果1234
  • 排序去重(重复的一个不留)
$cat a.txt | sort | uniq -u
结果123

处理图片

以来外部程序`sudo apt-get install imagemagick

  • 更改图片格式
$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密码,密钥登陆的值设置为 NULLARR_SERVER_PASSWORD=(    [0]='PASSWORD'    [1]=NULL)# 服务器说明ARR_SERVER_COMMENT=(    [0]='密码登陆'    [1]='秘钥登陆')# 密钥文件地址. 如果是密钥登陆的话, 值为密钥文件地址. 否则为 NULLARR_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_echowhile truedo   # 让使用者选择所需要登陆服务器的所属序号    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    # 跳出循环    breakdone# 登陆的函数# 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=0proc_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=0while (true)doproc_numnumber=$?if [ $number -eq 0 ]then        #此处填写重启命令    proc_id    count=$[count+1]        echo $count:'Restart' >> $log_name    echo ${pid}:`date` >>  $log_name        sleep 2mfidone

例行任务

转载于:https://www.cnblogs.com/taceywong/p/6986688.html

你可能感兴趣的文章
使用data pump工具的准备
查看>>
springMVC---级联属性
查看>>
get和post区别
查看>>
crontab执行shell脚本日志中出现乱码
查看>>
cmd.exe启动参数说明
查看>>
《随笔记录》20170310
查看>>
网站分析系统
查看>>
从零开始来看一下Java泛型的设计
查看>>
Shell编程基础
查看>>
Shell之Sed常用用法
查看>>
3.1
查看>>
校验表单如何摆脱 if else ?
查看>>
JS敏感信息泄露:不容忽视的WEB漏洞
查看>>
让我们荡起双桨,Android 小船波浪动画
查看>>
分布式memcached服务器代理magent安装配置(CentOS6.6)
查看>>
Create Volume 操作(Part III) - 每天5分钟玩转 OpenStack(52)
查看>>
tomcat 8.0虚拟机配置文档
查看>>
pxc群集搭建
查看>>
JS中加载cssText延时
查看>>
常用的脚本编程知识点
查看>>