常用linux命令及shell脚本
参考:Linux命令大全
分割大文件
- 按行分割(只能是文本文件)
$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
处理图片
以来外部程序``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密码,密钥登陆的值设置为 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脚本的更多相关文章
- 如何在java程序中调用linux命令或者shell脚本
转自:http://blog.sina.com.cn/s/blog_6433391301019bpn.html 在java程序中如何调用linux的命令?如何调用shell脚本呢? 这里不得不提到ja ...
- Java执行cmd命令、bat脚本、linux命令,shell脚本等
1.Windows下执行cmd命令 如复制 D:\tmp\my.txt 到D:\tmp\my_by_only_cmd.txt 现文件如图示: 执行代码: private static void run ...
- 常用Linux命令小结
常用Linux命令小结 Linux下有很多常用的很有用的命令,这种命令用的多了就熟了,对于我来说,如果长时间没有用的话,就容易忘记.当然,可以到时候用man命令查看帮助,但是,到时候查找的话未免有些临 ...
- 77个常用Linux命令和工具
77个常用Linux命令和工具 Linux管理员不能单靠GUI图形界面吃饭.这就是我们编辑这篇最实用Linux命令手册的原因.这个指南是特别为Linux管理员和系统管理员 设计的,汇集了最有用的一些工 ...
- 工作中常用Linux命令--服务器运维
工作中常用Linux命令--服务器运维 lsof查看端口使用情况 lsof -i:8080更多lsof命令使用说明:http://www.cnblogs.com/peida/archive/2013/ ...
- 常用 Linux 命令的基本使用
常用 Linux 命令的基本使用 操作系统 作用:管理好硬件设备,让软件可以和硬件发生交互类型 桌面操作系统 Windows macos linux 服务器操作系统 linux Windows ser ...
- 【Linux基础】常用Linux命令: cd, cp, ls, mkdir, mv, rm, su, uname
常用Linux命令:cd, cp, ls, mkdir, mv, rm, su, uname cd命令:切换当前工作目录至 dirName(目录参数) 其中 dirName 可为绝对路径或相对路径.若 ...
- linux下实现shell脚本自动连接mongodb数据库并创建索引
在linux下创建shell脚本
- Linux终端执行shell脚本,提示权限不够的解决办法
原文:http://blog.csdn.net/this_capslock/article/details/17415409 今天在Linux尝试搭建dynamips的工作环境,在执行shell脚本时 ...
随机推荐
- SharePoint 2013 地址栏_layouts/15/start.aspx#
大家在使用SharePoint2013的时候是否发现,地址栏中显示的URL不再变得友好,多出这么一段“_layouts/15/start.aspx#”,怎么看怎么别扭. 如果要取消这段路径的显示,需要 ...
- C#爬网页时“远程服务器返回错误: (403) 已禁止”解决方法
HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(uri); //这个一定要加上,在某些网站没有会发生"远程服务器返回错误: ...
- centos6.8 安装Python2.7后, yum出现“No module named yum”错误
出现yum错误:No module named yum 解决方法,查看 /usr/bin下python有哪几个版本 ll /usr/bin 我这里是:2.6 和 2.7 (刚安装的) 由于yum命 ...
- phoenix客户端连接hbase数据库报错:Traceback (most recent call last): File "bin/sqlline.py", line 27, in <module> import argparse ImportError: No module named argparse
环境描述: 操作系统版本:CentOS release 6.5 (Final) phoenix版本:phoenix-4.10.0 hbase版本:hbase-1.2.6 现象描述: 通过phoenix ...
- python--模块--10
原创博文,转载请标明出处--周学伟http://www.cnblogs.com/zxouxuewei/ Python 模块 Python 模块(Module),是一个 Python 文件,以 .py ...
- 实战c++中的string系列--不要使用memset初始化string(一定别这么干)
參考链接: http://www.cppblog.com/qinqing1984/archive/2009/08/07/92479.html 百度百科第一次这么给力: void *memset(voi ...
- ios开发之--NSString的操作
NSString的操作,下面记录下他的常用方法: NSString *str = @"1111111111aaaaaaaaa2222222222"; 1.查找 //查找 NSRan ...
- 虚拟机中多个Linux系统之间配置免秘钥访问
1.三个节点cdh1,cdh2,cdh3 2.在每个机器上分别生产公钥对 ssh-keygen -t rsa 3.复制公钥 cd .ssh cat id_rsa.pub >> auth ...
- IIS URL Rewrite Module的防盗链规则设置
IIS版本:IIS 7.5 URL Rewrite组件:IIS URL Rewrite Module(http://www.iis.net/downloads/microsoft/url-rewrit ...
- 先安装VS2017再安装VS2015遇到的CMake问题
先安装了VS2017,后来有需求安装VS2015,安装VS2015的时候遇到下图问题,但是控制面板里面看不到Microsoft Visual C++ 2015 Redistributable的项目 我 ...