`

LINUX SHELL复习1

阅读更多
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'  //将其中的数字删除并打印出来
 
2
0
分享到:
评论

相关推荐

    Linux Shell编程从入门到精通

    本书由浅入深、循序渐进地详细讲解了LinuxShell编程的基本知识。这些基本知识包括Shell编程的基本知识、文本处理的工具和方法、正则表达式、Linux系统知识等。  本书旨在通过理清Linux Shell编程的脉络,从基本概念...

    LINUX SHELL脚本攻略(中文版带书签)

    **Linux Shell脚本攻略概述** Linux Shell脚本是Linux操作系统中一种强大的自动化工具,它允许用户通过编写一系列命令来执行批量任务,简化日常操作。在Linux世界里,Shell脚本对于开发人员、测试人员和运维人员来...

    linux期末复习资料

    本文对Linux期末复习资料进行了详细的知识点总结,涵盖了Linux的基本概念、Linux系统的特点、Linux的获取方法、安装Linux系统对硬盘分区的要求、Linux系统较流行的图形环境、如何进入Linux系统的命令行模式、Linux的...

    Linux Shell脚本攻略(第2版),高清带书签,人民邮电出版社

    《Linux Shell脚本攻略(第2版)》是学习Linux系统管理和自动化运维的重要参考资料,尤其对于初学者和专业IT人员...书中提供的高清书签版使得查找和复习特定知识点更为便捷,是一本值得拥有的Linux Shell脚本学习资料。

    Linux.Shell编程从入门到精通详解

    Linux Shell 编程是从入门到精通详解的书籍,主要针对的是对Linux操作系统的程序设计感兴趣的读者。书中从基础概念出发,通过实际案例教学,对Shell编程进行详细的讲解和指导。Shell编程是一种在Unix及类Unix系统中...

    linux shell语言基础笔记 xmind

    这份“Linux Shell语言基础笔记xmind”显然是一个整理了Shell基础知识的思维导图文件,对于初学者或者需要复习Shell语法的人来说,是一个极好的学习资源。 首先,让我们来探讨一下Shell的基础知识。在Linux中,最...

    Linux复习题-判断题

    Linux复习题-判断题 本资源为Linux操作系统考试必看教师出题的题库高分的保障,涵盖了Linux系统的多个方面,包括系统组成、文件系统、应用程序、系统管理、网络管理等知识点。 一、系统组成 * Linux系统一般由4个...

    Linux认证复习参考题100道含答案

    这些题目涵盖了Linux操作系统的多个核心概念,包括系统管理、文件系统、设备管理...以上是对这些Linux认证复习题目的详细解释,涵盖了Linux系统管理的基础知识,对于准备Linux认证考试或者日常系统维护都是很有帮助的。

    期末Linux复习资料整理

    1. **Linux系统架构**:Linux是一个基于Unix的操作系统,由多个层次组成,包括内核、shell、文件系统、用户接口和应用程序。理解这五大部分的功能和相互关系是学习Linux的基础。 2. **Linux内核**:作为Linux的核心...

    Linux复习.rar

    Linux复习文档旨在帮助初学者掌握Linux操作系统的基础知识和核心概念。Linux是一种自由开源的操作系统,其内核由林纳斯·托瓦兹开发,现在由全球众多开发者共同维护。Linux系统的广泛应用包括服务器、嵌入式设备以及...

    南京大学《Linux》复习知识点及重点.pdf

    1. **Linux历史与哲学**:了解Linux的起源,由Linus Torvalds开发,以及它所遵循的开源和自由软件的理念。 2. **Linux内核**:理解内核的角色,包括进程管理、内存管理、文件系统、网络协议栈等核心功能。 3. **...

    华清远见 Shell编程从入门到精通 中文版

     《linux shell编程从入门到精通》的每一章节都配有综合案例,这些综合案例不仅可以使读者复习前面所学的知识,还可以增加开发项目的经验。这些案例实用性很强,许多代码可以直接应用到linux系统管理中。

    linux操作系统复习资料

    Shell是Linux用户与系统交互的关键,它是一个命令解释器和程序设计语言。Bash是常见的Shell类型,它允许用户编写脚本,执行命令,同时提供了循环、分支等高级编程结构。Linux相较于其他操作系统,如Windows,具有与...

    Linux期末复习(超级详细的 选择、填空、简答、判断、编程等题型总结以及实验和PPT汇总).zip

    1. **选择题**:这部分可能涉及到Linux的历史、核心组件、文件系统类型、权限管理、进程管理等相关知识。例如,Linux的创始人是Linus Torvalds,Linux内核是操作系统的中心,ext4是常见的Linux文件系统,chmod命令...

    Shell编程高级进阶系列视频.zip

    13Linux下Shell编程之While case演练 14Linux下Shell编程之While case演练 15Shell编程之函数及脚本案例讲解 16Shell编程之函数及脚本案例讲解 17Linux下Shell编程FIND、SED命令实战 18Linux下Shell编程FIND、SED...

    LinuxUbuntu复习题.pdf

    Linux Ubuntu 复习题 本资源摘要信息涵盖了 Linux Ubuntu 的多个方面,包括文件系统、权限管理、网络配置、Shell scripting 等。下面是详细的知识点: 1. 文件系统管理 * Ubuntu Linux 的默认分区类型是 Ext4。 ...

    LINUX期末复习+输入输出模块实验

    本实验旨在深入理解Linux的I/O机制,并通过期末复习巩固相关知识。下面将详细阐述Linux的输入输出模块以及期末复习的重点内容。 一、Linux输入输出模块 1. I/O模型:Linux支持五种主要的I/O模型,包括同步阻塞I/O...

    linux整理与复习

    1. **启动图形化桌面**:通过`startx`命令可以在字符终端中启动X Window系统,或者使用快捷键`Ctrl+Shift+Alt+F7`切换到图形界面,`Ctrl+Shift+Alt+F1~F6`可以切换到不同的字符终端tty1~tty6。 2. **目录切换**:`...

    Linux复习习题

    1. **Linux基础**:理解Linux的起源和发展,了解其与其他操作系统(如Windows和macOS)的区别。学习如何启动和关闭Linux系统,以及如何切换用户和管理权限。 2. **文件系统与命令行**:掌握Linux的目录结构,例如根...

Global site tag (gtag.js) - Google Analytics