Linux Shell常用命令总结(51cto 博客搬迁)

1.   find
      find pathname -options [-print -exec -ok]
      让我们来看看该命令的参数:
      pathname find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
      -print find命令将匹配的文件输出到标准输出。
      -exec find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为‘command‘ {} \;,注意{}和\;之间的空格,同时两个{}之间没有空格,
注意一定有分号结尾。
      0) -ok 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行
      find . -name "datafile" -ctime -1 -exec ls -l {} \; 找到文件名为datafile*, 同时创建实际为1天之内的文件, 然后显示他们的明细.
      find . -name "datafile" -ctime -1 -exec rm -f {} \; 找到文件名为datafile*, 同时创建实际为1天之内的文件, 然后删除他们.

find . -name "datafile" -ctime -1 -ok ls -l {} \; 这两个例子和上面的唯一区别就是-ok会在每个文件被执行命令时提示用户, 更加安全.
      find . -name "datafile" -ctime -1 -ok rm -f {} \;

1) find . -name   基于文件名查找,但是文件名的大小写敏感.    
      find . -name "datafile*"

2) find . -iname  基于文件名查找,但是文件名的大小写不敏感.
      find . -iname "datafile*"

3) find . -maxdepth 2 -name fred 找出文件名为fred,其中find搜索的目录深度为2(距当前目录), 其中当前目录被视为第一层.

4) find . -perm 644 -maxdepth 3 -name "datafile*"  (表示权限为644的, 搜索的目录深度为3, 名字为datafile*的文件)

5) find . -path "./rw" -prune -o -name "datafile*" 列出所有不在./rw及其子目录下文件名为datafile*的文件。
      find . -path "./dir*" 列出所有符合dir*的目录及其目录的文件.
      find . \( -path "./d1" -o -path "./d2" \) -prune -o -name "datafile*" 列出所有不在./d1和d2及其子目录下文件名为datafile*的文件。

6) find . -user ydev 找出所有属主用户为ydev的文件。
      find . ! -user ydev 找出所有属主用户不为ydev的文件, 注意!和-user之间的空格。

7) find . -nouser    找出所有没有属主用户的文件,换句话就是,主用户可能已经被删除。

8) find . -group ydev 找出所有属主用户组为ydev的文件。

9) find . -nogroup    找出所有没有属主用户组的文件,换句话就是,主用户组可能已经被删除。

10) find . -mtime -3[+3] 找出修改数据时间在3日之内[之外]的文件。
      find . -mmin  -3[+3] 找出修改数据时间在3分钟之内[之外]的文件。
      find . -atime -3[+3] 找出访问时间在3日之内[之外]的文件。
      find . -amin  -3[+3] 找出访问时间在3分钟之内[之外]的文件。
      find . -ctime -3[+3] 找出修改状态时间在3日之内[之外]的文件。
      find . -cmin  -3[+3] 找出修改状态时间在3分钟之内[之外]的文件。

11) find . -newer eldest_file ! -newer newest_file 找出文件的更改时间 between eldest_file and newest_file。
      find . -newer file     找出所有比file的更改时间更新的文件
      find . ! -newer file 找出所有比file的更改时间更老的文件

12) find . -type d    找出文件类型为目录的文件。
      find . ! -type d  找出文件类型为非目录的文件。
      b - 块设备文件。
      d - 目录。
      c - 字符设备文件。
      p - 管道文件。
      l - 符号链接文件。
      f - 普通文件。

13) find . -size [+/-]100[c/k/M/G] 表示文件的长度为等于[大于/小于]100块[字节/k/M/G]的文件。

14) find . -empty 查找所有的空文件或者空目录.

15) find . -type f | xargs grep "ABC" 
      使用xargs和-exec的区别是, -exec可能会为每个搜索出的file,启动一个新的进程执行-exec的操作, 而xargs都是在一个进程内完成, 效率更高.

2.   crontab:
      文件格式如下(每个列之间是使用空格分开的):
      第1列分钟1~59
      第2列小时1~23(0表示子夜)
      第3列日1~31
      第4列月1~12
      第5列星期0~6(0表示星期天)
      第6列要运行的命令

分 时 日 月 星期 要运行的命令

30 21* * * /apps/bin/cleanup.sh
上面的例子表示每晚的21:30运行/apps/bin目录下的cleanup.sh。
      45 4 1,10,22 * * /apps/bin/backup.sh
上面的例子表示每月1、10、22日的4:45运行/apps/bin目录下的backup.sh。
      10 1 * * 6,0 /bin/find -name "core" -exec rm {} \;
上面的例子表示每周六、周日的1:10运行一个find命令。
      0,30 18-23 * * * /apps/bin/dbcheck.sh
上面的例子表示在每天18:00至23:00之间每隔30分钟运行/apps/bin目录下的dbcheck.sh。
      0 23 * * 6 /apps/bin/qtrend.sh
上面的例子表示每星期六的11:00pm运行/apps/bin目录下的qtrend.sh。

-u 用户名。
      -e 编辑crontab文件。
      -l 列出crontab文件中的内容。
      -r 删除crontab文件。
      系统将在/var/spool/cron/目录下自动保存名为<username>的cron执行脚本.
      cron是定时完成的任务, 在任务启动时,一般来讲都是重新启动一个新的SHELL, 因此当需要使用登录配置文件的信息,特别是环境变量时,是非常麻烦的. 
      一般这种问题的使用方法如下:
      0 2 * * * ( su - USERNAME -c "export LANG=en_US; /home/oracle/yb2.5.1/apps/admin/1.sh"; ) > /tmp/1.log 2>&1
如果打算执行多条语句, 他们之间应使用分号进行分割. 注: 以上语句必须在root的帐户下执行.

3.   nohup:
      nohup command & 
      如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户之后继续运行相应的进程。
      Nohup就是不挂起的意思(no hang up)。

4.   cut:
      1) cut一般格式为:cut [options] file1 file2
      -c list 指定剪切字符数。
      -f field 指定剪切域数。
      -d 指定与空格和tab键不同的域分隔符。
      -c 用来指定剪切范围,如下所示:
      -c1,5-7 剪切第1个字符,然后是第5到第7个字符。
      -c2- 剪切第2个到最后一个字符
      -c-5 剪切最开始的到第5个字符
      -c1-50 剪切前50个字符。
      -f 格式与-c相同。
      -f1,5 剪切第1域,第5域。
      -f1,10-12 剪切第1域,第10域到第12域。
      2) 使用方式:
      cut -d: -f3 cut_test.txt (基于":"作为分隔符,同时返回field 3中的数据) *field从0开始计算。
      cut -d: -f1,3 cut_test.txt (基于":"作为分隔符,同时返回field 1和3中的数据)
      cut -d: -c1,5-10 cut_test.txt(返回第1个和第5-10个字符)

5.   sort:    
      1) 对文件内容进行排序,缺省分割符为空格,如果自定义需要使用-t选择,如-t:
      2) 使用分隔符分割后,第一个field为0,awk中为1
      3) 具体用法如下:
      sort -t: sort_test.txt(缺省基于第一个field进行排序,field之间的分隔符为":")
      sort -t: -r sort_test.txt(缺省基于第一个field进行倒序排序,field之间的分隔符为":")
      sort -t: +1 sort_test.txt(基于第二个field进行排序,field之间的分隔符为":")
      sort +3n sort_test.txt(基于第三个field进行排序,其中n选项提示是进行"数值型"排序) 
      sort -u  sort_test.txt(去除文件中重复的行,同时基于整行进行排序)
      sort -o output_file -t: +1.2[n] sort_text.txt(基于第二个field,同时从该field的第二个字符开始,这里n的作用也是"数值型"排序,并将结果输出到 output_file中)
      sort -t: -m +0 filename1 filename2(合并两个文件之后在基于第一个field排序)

6.   pgrep和pkill:

查找和杀死指定的进程, 他们的选项和参数完全相同, 这里只是介绍pgrep
      /> sleep 100&
      1000
      /> sleep 100&
      1001

/> pgrep sleep
      1000
      1001
      /> pgrep -d: sleep    # -d定义多个进程之间的分隔符, 如果不定义则使用newline
      1000:1001
      /> pgrep -n sleep    # -n表示如果该程序有多个进程,查找最新的.
      1001
      /> pgrep -o  sleep    # -o表示如果该程序有多个进程,查找最老的.
      1000   
      /> pgrep -G root,oracle sleep # -G 表示进程的group id在-G后面的组列表中的进程会被考虑
      1000
      1001
      /> pgrep -u root,oracle sleep # -u 表示进程的effetive user id在-u后面的组列表中的进程会被考虑
      1000
      1001
      /> pgrep -U root,oracle sleep # -U 表示进程的real user id在-u后面的组列表中的进程会被考虑
      1000
      1001
      /> pgrep -x sleep # -x 表示进程的名字必须完全匹配, 以上的例子均可以部分匹配
      1000
      1001
      /> pgrep -x sle

/> pgrep -l sleep # -l 将不仅打印pid,也打印进程名
      1000 sleep
      1001 sleep
      /> pgrep -lf sleep # -f 一般与-l合用, 将打印进程的参数
      1000 sleep 100
      1001 sleep 100

/> pgrep -f sleep -d, | xargs ps -fp
      UID        PID  PPID  C STIME TTY          TIME CMD
      root      1000  2138  0 06:11 pts/5    00:00:00 sleep 1000
      root      1001  2138  0 06:11 pts/5    00:00:00 sleep 1000

7.   fuser:
      fuser -m /dev    # 列出所有和/dev设备有染的进程pid.
      fuser testfile    # 列出和testfile有染的进程pid
      fuser -u testfile # 列出和testfile有染的进程pid和userid
      fuser -k testfile # 杀死和testfile有染的进程pid

8.   mount:

   如何在unix下面mount一个windows下面的共享目录
      mount -t smbfs -o username=USERNAME,password=PASSWORD //windowsIp/pub_directory  /mountpoint   
      /> mkdir -p /mnt/win32
      /> mount -o username=administrator,password=1234 //10.1.4.103/Mine /mnt/win32
      /> umount /mnt/win32        # 卸载该mount.

9.   netstat:

   -a 表示显示所有的状态
   -l 则只是显示listen状态的,缺省只是显示connected
   -p 显示应用程序的名字
   -n 显示ip、port和user等信息
   -t 只显示TCP的连接
   /> netstat -apnt 
   /> netstat -lpnt      #如果只是显示监听端口的状态,可以使用该命令

10. tune2fs:

   调整ext2/ext3文件系统特性的工具

   -l 查看文件系统信息
   /> tune2fs -l /dev/sda1  #将会列出所有和该磁盘分区相关的数据信息,如Inode等。
   /> tune2fs -l /dev/sda1 | grep -i "block size"      #查看当前文件系统的块儿尺寸
   /> tune2fs -l /dev/sdb1 |grep -i "mount count"   #查看 mount count 挂载次数

11.  开启或关闭Linux(iptables)防火墙
     重启后永久性生效:
     /> chkconfig iptables on         #开启
     /> chkconfig iptables off         #关闭

即时生效,重启后还原:
     /> service iptables start        #开启
     /> service iptables stop         #关闭

 

12.  tar 分卷压缩和合并
     以每卷500M为例
     />tar cvzpf - somedir | split -d -b 500m    #tar分卷压缩
     />cat x* > mytarfile.tar.gz                      #tar多卷合并

 

13.  把man或info的信息存为文本文件
     /> man tcsh | col -b > tcsh.txt
     /> info tcsh -o tcsh.txt -s

14.  查看正在执行进程的线程数
     />ps -eo "args nlwp pid pcpu"

15.  使用md5sum计算文件的md5
     /> md5sum test.c
     07af691360175a6808567e2b08a11724  test.c

/> md5sum test.c > hashfile
     /> md5sum –c hashfile     # 验证hashfile中包含的md5值和对应的文件,在执行该命令时是否仍然匹配, 如果此时test.c被修改了,该命令将返回不匹配的警告.

16.  在ps命令中显示进程的完整的命令行参数
     />ps auwwx

17. chkconfig:

1). 编辑chkconfig操作的Shell文件头。
   #!/bin/bash
   #
   # chkconfig: 2345 20 80
   # description: Starts and stops the Redis Server
   这个注释头非常重要,否则chkconfig命令无法识别。其中2345表示init启动的级别,即在2、3、4、5这四个级别中均启动该服 务。20表示该脚本启动的优先级,80表示停止的优先级。这些可以在chkconfig的manpage中找到更为详细的说明。

2). 编译Shell文件的内容:
   case "$1" in
   start)
       #TODO: 执行服务程序的启动逻辑。
       ;;
   stop)
       #TODO: 执行服务程序的停止逻辑。
       ;;
   restart)
       ;;
   reload)
       ;;
   condrestart)
       ;;
   status)
       ;;
   上面列出的case条件必不可少,如果确实没有就当做占位符放在那里即可,如上例。

3). 添加和删除服务程序:
   #--add选项表示添加新的服务程序。
   /> chkconfig --add redis_6379
   #查看是否删除或添加成功
   /> chkconfig | grep redis_6379
   redis_6379      0:off   1:off   2:on    3:on    4:on    5:on    6:off
   #--del选项表示删除已有的服务程序。
   /> chkconfig --del redis_6379

时间: 2024-12-21 15:08:33

Linux Shell常用命令总结(51cto 博客搬迁)的相关文章

Linux Shell常用命令总结

1.   find       find pathname -options [-print -exec -ok]       让我们来看看该命令的参数:       pathname find命令所查找的目录路径.例如用.来表示当前目录,用/来表示系统根目录.       -print find命令将匹配的文件输出到标准输出.       -exec find命令对匹配的文件执行该参数所给出的shell命令.相应命令的形式为'command' {} \;,注意{}和\:之间的空格,同时两个{}

ping 网关不同的原因(51cto博客搬迁)

2013-09-08 19:35:58 网络工程师都会用到Ping,它是检查路由问题的有效办法.但也常听工程师抱怨:不可能,怎么会不通呢? 这样的困惑一般发生在自认为路由设置正确的时候.举几个笔者遇到的问题,欢迎大家补充. 最简单的三种情况: 1.太心急.即网线刚插到交换机上就想Ping通网关,忽略了生成树的收敛时间.当然,较新的交换机都支持快速生成树,或者有的管理员干脆把用户端口(access port)的生成树协议关掉,问题就解决了. 2.访问控制.不管中间跨越了多少跳,只要有节点(包括端节

Linux常用命令(个人博客)

Linux由浅入深的命令汇总:系统基本命令:命令 描述 格式man 帮助查阅命令的帮助文档 man COMMANDdate 查阅时间,可结合相关参数(-s) date reboot 重启 rebootpoweroff 关机 poweroffwget 从网上下载资料 wget 网址ps 显示程序情况(RSDZT) PS[-u -a -x]top 用于动态监控进程活动和系统负载 top pidof 显示进程的IP,可结合kill命令中指该进程 pidofkill 终止某进程 kill [pid]ki

Linux shell 常用命令大全 每日一更

大一上学期学习了Linux的基本操作,已经很久没使用了,虚拟机也近半年没开(作为一个计算机类专业的少年真的不应该).为了补回这些知识和为将来的学习打下基础,现在每天更新一条shell命令及其子命令,欢迎查看.命令主要按字母顺序排列,网上也可以找到,以作用排列比较方便查看,也不容易漏掉一些命令. Linux下常用文件管理命令: pwd          显示当前目录绝对路径名,个人觉得挺好用的一个命令 ls -参数 显示当前目录下的文件 参数选项:-a ->列举目录中所有文件,包括目录下的隐藏文件

RedHat Linux Shell常用命令(多数也适用于Unix和AIX)

目的:通过对日常使用的一些Linux命令进行总结分享,希望能给大家一些帮助.说明:本文的命令都是在RedHat Linux下测试的,Unix和IBM AIX下的命令有所不同,具体查看 man page.如有错误,欢迎指正. 建议:读者在操作的过程中希望形成参考 man page的习惯,非常有用. 1.# 表示权限用户(如:root),$ 表示普通用户  开机提示:Login:输入用户名  password:输入口令   用户是系统注册用户成功登陆后,可以进入相应的用户环境.  退出当前shell

Linux Shell 常用命令

Linux Shell 中的反引号,单引号,双引号的区别 1.反引号位 (`):在Linux中起着命令替换的作用.命令替换是指shell能够将一个命令的标准输出插在一个命令行中任何位置. 和$()是一样的.在执行一条命令时,会先将其中的 `` ,或者是$() 中的语句当作命令执行一遍,再将结果加入到原命令中重新执行, 例如:echo `ls` 会先执行 ls 得到 xx.sh等,再替换原命令为:echo xx.sh [[email protected] ~]# echo today is $(d

Linux Shell常用命令手册(Updating)

检查远程端口是否对bash开放: nc -nvv $IP $PORT telnet $IP $PORT 当前任务的前后台切换: Ctrl + z fg 截取变量前5个字符: ${variable:0:5} SSH debug 模式: ssh -vvv [email protected]_address SSH with pem key: ssh [email protected]_address -i key.pem 监视日志文件 tail -f $FILE_NAME 多个监视的脚本 multi

linux shell常用命令

for循环 applist=(app1 app2 app3);for app in ${applist[@]};do echo $app;done; 获取IP地址 ifconfig |grep -Po '(?<=addr:).*(?=Bc)' ifconfig|awk -F"[: ]+" '$4~/[0-9].+[^0-9]+/{print $4}/lo/{exit}' ifconfig|sed -nr 's/^[[:space:]]+inet addr:(.*) Bcast.*

Shell 常用命令

Shell 常用命令 这篇博客记录了一些 Shell 常用命令 供未来查阅. 添加ll 为了简化 "ls -l",可以在~/.bash_profile中加入: 1 2 alias ll='ls -l' 获得参数 $0是命令本身$1是第一个参数 $ $可以认为是 获取内容 . 内置变量 bash有很多内置变量,我们可以使用$获取到它们,例如: 1 2 3 4 5 $PWD $HOME $PATH $(pwd) 读取配置 配置数据可以像下面一样: 1 2 3 4 Fansy:UtilToo