Linux Shell常用命令总结,linuxshell常用命令例如用.来表示当前目


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 -usort_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 -osleep # -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 PIDPPIDC STIME TTY TIME CMD


root 100021380 06:11 pts/5 00:00:00 sleep 1000


root 100121380 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


07af691360175a6808567e2b08a11724test.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

相关内容

    暂无相关文章