- 浏览: 2515835 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (676)
- linux运维 (157)
- php (65)
- mysql (78)
- nginx (27)
- apche (18)
- framework (6)
- windows (9)
- IDE工具 (23)
- struts2 (7)
- java (13)
- 移动互联网 (14)
- memcache redis (23)
- shell基础/命令/语法 (37)
- shell (50)
- puppet (4)
- C (11)
- python (9)
- 产品经理 (27)
- Sphinx (4)
- svn (12)
- 设计构建 (12)
- 项目管理 (44)
- SEO (1)
- 网站架构 (26)
- 审时度势 (42)
- 网络 (14)
- 激发事业[书&视频] (81)
- 其它 (12)
- 摄影 (8)
- android (21)
最新评论
-
zhongmin2012:
原文的书在哪里
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
renzhengzhi:
你好,请问个问题,从master同步数据到slave的时候,s ...
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
ibc789:
你好,看了你的文章,我想请教个问题, 我在用 redis的时候 ...
redis 的两种持久化方式及原理 -
iijjll:
写得非常好
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
iijjll:
写得非常好
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器
转载:http://jackyrong.iteye.com/blog/1378736
1 假如知道一个应用运行,想知道其进程id,可以用:
pgrep xxxx获得其进程id
再通过
cat /proc/进程id号/environ
获得其环境变量
2 获得字符串长度
var=1233333
length=${#var}
3 判断当前脚本是否超级管理员执行
if [ $UID -ne 0]; then
.......
root用户的uid为0
4 sort排序
sork -nrk 1 data.txt //按第1列逆序排列
其中-k 指定按哪个键进行排序,-r说明是逆序排列,-n表示按数字排序
sort -k 2 data.txt 按data.txt的第2列排序
5 uniq,消除重复的内容
sort data.txt |uniq
输出data.txt中不重复的内容
找出文件中重复的行
sort data.txt |uniq -d
6 根据扩展名切分文件名,比如从sample.jpg中提取文件名
file_jpg="sample.jpg"
name=${file_jpg%.*}
echo $name //输出sample
extension=${file_jpg#*.}
输出jpg
其中,${var%.*}作用为从右到左,删除位于%右侧的字符 ${var%%.*},则右向左匹配最长的字符
var=asd.sdsdf.fdfdf.txt
echo ${var%.*} 输出 asd.sdsdf.fdfdf
echo ${var%%.*} 输出asd
而#*.则是从左到右,删除#找到的通配符的左测的字符,##则是找最长的
则echo ${var#*.}输出sdsdf.fdfdf.txt echo ${var##*.} 输出 txt
7 pushd和popd
这两个命令可以将目录压入栈中,而不用复制粘贴
pushd /var/www
则栈中压入了/var/www ,再压入
pushd /usr/src
再dirs
当要切换到某个目录时,则pushd +3 //则切换到目录第3层,从0开始编号
移除 popd
8 grep检索
1) 正则表达式 grep -E "[a-z]+" // 使用E选项
2) 递归检索文件
grep "xxxx" . -R -n //当前目录下多级递归检索目录
3)grep -i "HELLO" -i选项,忽略大小写
4)grep 搜索中包括和排除某些文件
grep 'test" . -r --include *.{c,txt} 只搜索后缀为c,txt的文件
不包括:
grep "test" . -r --exclude "readme"
9 sed
可以替换给定文本中的字符串
sed 'xxxxxxx' file
移除空白行
sed '/^$d' file
10 AWK
1)AWK 'BEGIN 语句块' pattern 语句块 end 语句块’
先执行begin语句块中的语句,然后从文件或者stdin中读取一行,再执行pattern,重复这个过程,直到
文件被完全读完;当读到输入流未尾时,执行end语句块结束
echo -e "line1\nline2" |awk 'BEGIN {print "start"} {print} end {print "end"}}'
则输出 Start
line1
line2
end
2)打印每一行的第2个字段和第3个字段
awk '{print $2,$3}' file
3) 统计文件中的行数
awk 'end {print NR}' file
11 wget -c url //断点续传
限制速度: wget --limit-rate 20k http://xxxx/xxxx.iso
curl -C url //断点续传
curl http://xxxxx/index.html -O 将输出写到同名的文件中去
12 使用curl查找网页上的无效链接的bash脚本
f [ $# -eq 2 ];
then
echo -e "$Usage $0 URL\n"
exit -1;
fi
echo Broken links:
mkdir /tmp/$$.lynx
cd /tmp/$$.lynx
lynx -traversal $1 > /dev/null
count=0;
sort -u reject.dat > links.txt
while read link;
do
output=`curl -I $link -s | grep "HTTP/.*OK"`;
if [[ -z $output ]];
then
echo $link;
let count++
fi
done < links.txt
[ $count -eq 0 ] && echo No broken links found.
首先lynx -traversal url会在工作目录下生成数个文件,其中包括reject.dat,这个文件
中保存网站的所有链接,sort -u用来建立不重复的列表,每次循环则用curl 去检测HTTP 头部
13 tar的几个用法
1)添加文件
tar -rvf xxx.tar abc.txt
2) 列出其中内容
tar -tf aaa.tar
3)只解压缩指定的文件
tar -xf aaa.tar file1 file3
4)删除tar中的某些文件
tar --delete --file xxx.tar 要删除的文件
14 查看磁盘空间
du -h xxx.txt
du -c -h xxxx(目录名)
15 列出1小时内占用CPU最多的10个进程
#!/bin/bash
#Name: pcpu_usage.sh
#Description: Script to calculate cpu usage by processes for 1 hour
SECS=3600
#Change the SECS to custom seconds
STEPS=$(( $SECS / 60 ))
echo Watching CPU usage... ;
for((i=0;i<STEPS;i++))
do
ps -eo comm,pcpu | tail -n +2 >> /tmp/cpu_usage.$$
sleep 60
done
echo
echo CPU eaters :
cat /tmp/cpu_usage.$$ | \
awk '
{ process[$1]+=$2; }
END{
for(i in process)
{
print i, process[i] ;
}
}' | sort -nrk 2 | head | cut -d" " -f1
其中:ps -eo comm,pcpu | tail -n +2 >> /tmp/cpu_usage.$$的tail -n +2 去掉输出的头部command 和CPU
cpu_usage.$$中的$$表示当前脚本进程的id.
16 编写一个检测入侵检测的脚本
#!/bin/bash
#Filename: intruder_detect.sh
#Description: Intruder reporting tool with auth.log input
AUTHLOG=/var/log.auth.log
if [[ -n $1 ]];
then
AUTHLOG=$1
echo Using Log file : $AUTHLOG
fi
LOG=/tmp/valid.$$.log
grep -v "invalid" $AUTHLOG > $LOG
users=$(grep "Failed password" $LOG | awk '{ print $(NF-5) }' | sort | uniq)
printf "%-5s|%-10s|%-10s|%-13s|%-33s|%s\n" "Sr#" "User" "Attempts" "IP address" "Host_Mapping" "Time
range"
ucount=0;
ip_list="$(egrep -o "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" $LOG | sort | uniq)"
forip in $ip_list;
do
grep $ip $LOG > /tmp/temp.$$.log
foruser in $users;
do
grep $user /tmp/temp.$$.log> /tmp/$$.log
cut -c-16 /tmp/$$.log > $$.time
tstart=$(head -1 $$.time);
start=$(date -d "$tstart" "+%s");
tend=$(tail -1 $$.time);
end=$(date -d "$tend" "+%s")
limit=$(( $end - $start ))
if [ $limit -gt 120 ];
then
letucount++;
IP=$(egrep -o "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" /tmp/$$.log | head -1 );
TIME_RANGE="$tstart-->$tend"
ATTEMPTS=$(cat /tmp/$$.log|wc -l);
HOST=$(host $IP | awk '{ print $NF }' )
printf "%-5s|%-10s|%-10s|%-10s|%-33s|%-s\n" "$ucount" "$user" "$ATTEMPTS" "$IP" "$HOST"
"$TIME_RANGE";
fi
done
done
其中是默认以/var/log/auth.log来进行检验,检验得出登陆失败,尝试次数,IP地址,时间范围的用户
17 找出系统用户的活跃活动时段
#!/bin/bash
#Filename: active_users.sh
#Description: Reporting tool to find out active users
log=/var/log/wtmp
if [[ -n $1 ]];
then
log=$1
fi
printf "%-4s %-10s %-10s %-6s %-8s\n" "Rank" "User" "Start" "Logins"
"Usage hours"
last -f $log | head -n -2 > /tmp/ulog.$$
cat /tmp/ulog.$$ | cut -d' ' -f1 | sort | uniq> /tmp/users.$$
(
while read user;
do
grep ^$user /tmp/ulog.$$ > /tmp/user.$$
seconds=0
while read t
do
s=$(date -d $t +%s 2> /dev/null)
let seconds=seconds+s
done< <(cat /tmp/user.$$ | awk '{ print $NF }' | tr -d ')(')
firstlog=$(tail -n 1 /tmp/user.$$ | awk '{ print $5,$6 }')
nlogins=$(cat /tmp/user.$$ | wc -l)
hours=$(echo "$seconds / 60.0" | bc)
printf "%-10s %-10s %-6s %-8s\n" $user "$firstlog" $nlogins $hours
done< /tmp/users.$$
) | sort -nrk 4 | awk '{ printf("%-4s %s\n", NR, $0) }'
rm /tmp/users.$$ /tmp/user.$$ /tmp/ulog.$$
18 tr
tr option set1 set2
将来自stdin的输入字符从set1映射到set2,比如将输入字符由大写转换为小写
$echo "HELLO" |tr 'A-Z','a-z'
tr 删除字符
echo "heelo 1234 " |tr -d '0-9' //将其中的数字删除并打印出来
发表评论
-
Linux运维常用命令 (转载)
2013-01-31 10:23 24911 删除0字节文件find-type f - ... -
[汇总]shell笔试
2013-01-24 17:32 3326http://president.blog.51cto.co ... -
检测 mysql 的sleep进程数
2013-01-04 14:13 1606#!/bin/sh 注:这个脚 ... -
【汇总】shell show收藏
2012-11-29 14:03 1230================== shell从文本取对应的 ... -
Shell中脚本变量和函数变量的作用域
2012-11-28 16:21 1341在shell中定义函 ... -
开发自动化系统管理脚本(界面式shell)
2012-11-28 16:00 1294此工具具有如下功能: (一)用户管理 1、修改root密码 ... -
你可能不知道的Shell
2012-11-26 13:41 980!$ !$是一个特殊的环境变量,它代表了上一个命令的 ... -
批量修改远程linux服务器密码
2012-11-14 17:49 1506#!/bin/bash # BY kerryhu # MA ... -
清理/var/spool/clientmqueue目录下文件
2012-11-08 10:52 1107今天遇到和原文作者完全一样的情况:有一台机器需要改一下cron ... -
read case
2012-11-01 16:55 924read -p "请输入安装程序编号:" ... -
shell实现将2个文件逐行交替存入一个文件中
2012-10-24 15:31 1581#!/bin/bash P ... -
关于shell脚本编程的10个最佳实践
2012-09-20 11:37 1532每一个在UNIX/Linux上工作的程序员 可能都 ... -
导出bin log时间段脚本datarecover.sh
2012-09-06 13:34 1195修改 _binlogdir='/data/mysql/m ... -
增量文件内容other.php
2012-08-31 16:13 1159#增量文件内容other.php i ... -
Linux一个简单的每秒执行命令shell脚本
2012-08-17 15:02 3268迁移了一台服务器,发现其中一个项目的数据没有更新,查询原服务器 ... -
[sh]php进程数过载后,平滑重启php
2012-07-27 11:24 2943#vim /usr/local/shell ... -
[sh]每天推送本地日志到log服务器
2012-07-27 11:24 1397#vim /u1/scp_all_logs ... -
很精彩的linux命令
2012-07-13 10:55 13301.按内存从大到小排列进程: ps -eo " ... -
[转]实用基础_shell脚本详解命令
2012-07-11 11:44 1431shell脚本编写技巧 " 1.test测试命令 tes ... -
慢查询日志分析脚本Mysql_slow_log_parser.pl
2012-07-03 13:43 1473使用方式: ./Mysql_slow_log_parser ...
相关推荐
Linux_Shell脚本攻略.第3版,高清电子版,作者Clif Flynt,Sarath Lakshman,Shantanu Tushar. 这本书的电子版也可以到http://readfree.me这个网站上下载。
Linux Shell脚本攻略(第2版) (图灵程序设计丛书) linux shell脚本攻略 电子书
Linux shell 脚本攻略,学习linux新手入门的较好教材,第二版,现已出版第三版
学习shell脚本经典书籍《Linux shell 脚本攻略-第二版》全书源代码合集
LINUX SHELL脚本攻略(中文版带书签) 从网上下载的一款关于Linux学习的好书 ,
inux Shell脚本攻略(第3版)为高清带目录版本,大家可以自由选择下载,希望大家可以通过本书学习到自己想要的技术
Linux-shell脚本全面学习.pdf
一款相当好用的shell攻略,很适合初学shell脚本的人群使用
LINUX+SHELL脚本攻略.pdf
LINUX SHELL脚本攻略(中文版带书签)
资源名称:Linux Shell脚本学习基础视频资源目录:【】11a00d99b60c4e2eba3440b8aa3a6bdd【】linux_shell脚本编程_01认识shell,如何编写shell脚本和执行【】linux_shell脚本编程_02vivim简单的常用操作【】linux_...
linux shell脚本攻略第2版 高清目录版 pdf 电子书
linux shell脚本攻略源代码.对学习shell脚本有很大的帮助。
LINUX SHELL脚本攻略.pdf 带目录书签
LINUX SHELL脚本攻略 写的很好 特地花钱从网上买的
Linux shell脚本开发中英文两份,希望可以帮到有需要的人。
Linux_shell脚本全面学习 Linux_shell脚本全面学习
LinuxShell脚本编程实例.pdf
Linux Shell 脚本攻略 操作系统