现在的位置:首页>空间域名>正文

常用Shell命令收集整理

2016年11月24日 ⁄ 共 3917字 暂无评论

常用Shell命令,对于那些和部落一样是半路出身的朋友来说,收集一下还是很有必要的,部落经常在进行相关的操作时,会去百度搜索再去查找相关的命令,而过一段时间又不记得了,所以收集整理了一些,第一是希望自己能在有空的时候多看看,其二是方便自己下次使用了。

两个快捷键

CTRL+L 清屏

CTRL+U 清除一行中(光标前的部分)

接下来,我们再来看看一些常用Shell命令收集整理:

查找3天内被修改过的php文件:

find /web/websys -mtime -3 -type f -name \*.php

复制同后缀名文件:

cp ./*.jpg ./bak

删除指定后缀文件:

find . -name '*.php' -type f -print -exec rm -rf {} \;

查找大于100M的文件:

find / -size +100M -exec ls -lh {} \;

查找指定目录并设置权限:

find ./ -type d -name "upload" | xargs chmod -R 777

查找文件内容中包含abcdef的文件:

grep -r "abcdef" /data/www/

查找当前目录下的所有文件然后把aaa.com替换为bbb.cn,下面两种方法都可以:

find . -type f -exec sed -i 's/aaa\.com/bbb\.cn/g' {} \;

find . -type f -exec sed -i 's/aaa.com/bbb.cn/g' {} \;

用ssh将host1上的目录/etc备份到host2的/tmp目录 在host2执行以下指令:

rsync -av -e ssh file.tar.gz 192.168.1.101:/etc /tmp 加上- -progress可以观察传输进度

在web目录下所有a.php文件的第2行插入123456:

find /web -name "a.php" -exec sed -i "2a 123456" {} \;

文件批量重命名:

find /web/websys -type f -name "123.txt" -exec rename '123.txt' '456.txt' {} \;

tar打包过滤目录:

tar -zcvf apache.tar.gz --exclude=apache/logs apache

清空所有日志,不删除文件:

for i in `find . -name "*.log"`; do cat /dev/null >$i; done

导出文件名与内容:

awk 'FNR==1{print FILENAME}1' *

mysql修复表:

/usr/local/mysql/bin/mysqlcheck --all-databases -uroot -p123456 -r

rsync传输列表中的文件:

rsync -rvazu --ignore-errors --timeout=200 --files-from=/home/list.txt /home/ root@1.1.1.1:/home/wwwroot/

下面再整理一些带参数注解的命令,如下:

1、 ls: 类似于dos下的dir命令

ls最常用的参数有三个: -a -l -F。

ls –a

Linux上的文件以.开头的文件被系统视为隐藏文件,仅用ls命令是看不到他们的,而用ls -a除了显示一般文件名外,连隐藏文件也会显示出来。

ls –l

该参数显示更详细的文件信息。

ls –F

使用这个参数表示在文件的后面多添加表示文件类型的符号,例如*表示可执行,/表示目录,@表示连结文件,这都是因为使用了-F这个参数。但是现在基本上所有的Linux发行版本的ls都已经内建了-F参数,也就是说,不用输入这个参数,我们也能看到各种分辨符号。

2、cd: 用于切换用户当前工作目录

cd aaa 进入aaa目录

cd 命令后不指定目录,会切换到当前用户的home 目录

cd ~ 作用同cd后不指定目录,切换到当前用户的home 目录

cd - 命令后跟一个减号,则会退回到切换前的目录

cd .. 返回到当前目录下的上一级目录

3、pwd:用于显示用户当前工作目录

4、mkdir 和 rmdir

midir:创建目录 rmdir:删除目录

两个命令都支持-p参数,对于mkdir命令若指定路径的父目录不存在则一并创建,对于rmdir命令则删除指定路径的所有层次目录,如果文件夹里有内容,则不能用rmdir命令

如下:

mkdir -p 1/2/3

rmdir -p 1/2/3

5、cp:复制命令

复制一个文件到另一目录:cp 1.txt ../test2

复制一个文件到本目录并改名:cp 1.txt 2.txt

复制一个文件夹a并改名为b:cp -r a b

6、mv:移动命令

将一个文件移动到另一个目录:mv 1.txt ../test1

将一个文件在本目录改名:mv 1.txt 2.txt

将一个文件一定到另一个目录并改名:mv 1.txt ../test1/2.txt

7、rm命令

rm命令用于删除文件,与dos下的del/erase命令相似,rm命令常用的参数有三个:-i,-r,-f。

–i :系统在删除文件之前会先询问确认,用户回车之后,文件才会真的被删除。需要注意,linux下删除的文件是不能恢复的,删除之前一定要谨慎确认。

–r:该参数支持目录删除,功能和rmdir命令相似。

–f:和-i参数相反,-f表示强制删除

8、du、df命令

du命令可以显示目前的目录所占用的磁盘空间,df命令可以显示目前磁盘剩余空间。

如果du命令不加任何参数,那么返回的是整个磁盘的使用情况,如果后面加了目录的话,就是这个目录在磁盘上的使用情况。

du -hs 指定目录 查看指定目录的总大小

du -hs ./* 查看当前目录下的所有文件夹和文件的大小

这两个命令都支持-k,-m和-h参数,-k和-m类似,都表示显示单位,一个是k字节一个是兆字节,-h则表示human-readable,即友好可读的显示方式。

9、cat命令

cat命令的功能是显示或连结一般的ascii文本文件。cat是concatenate的简写,类似于dos下面的type命令。用法如下:

cat file1 显示file1文件内容

cat file1 file2 依次显示file1,file2的内容

cat file1 file2 > file3 把file1, file2的内容结合起来,再“重定向(>)”到file3文件中。

">"是右重定向符,表示将左边命令结果当成右边命令的输入,注意:如果右侧文件是一个已存在文件,其原有内容将会被清空,而变成左侧命令输出内容。如果希望以追加方式写入,请改用">>"重定向符。

如果">"左边没有指定文件,如: cat >file1,将会等用户输入,输入完毕后再按[Ctrl]+[c]或[Ctrl]+[d],就会将用户的输入内容写入file1。

10、echo命令

echo命令的使用频率不少于ls和cat,尤其是在shell脚本编写中。

语法:echo [-ne][字符串]

功能:echo会将输入的字符串送往标准输出,输出的字符串间以空白字符隔开, 并在最后加上换行符。

参数:

-n 显示字串时在最后自动换行

-e 支持以下格式的转义字符, -E 不支持以下格式的转义字符

/a 发出警告声;

/b 删除前一个字符;

/c 最后不加上换行符号;

/f 换行但光标仍旧停留在原来的位置;

/n 换行且光标移至行首;

/r 光标移至行首,但不换行;

/t 插入tab;

/v 与/f相同;

// 插入/字符;

/nnn 插入nnn(八进制)所代表的ASCII字符;

11.命令连接符

&& 前一个命令执行成功,后一个命令才会执行

|| 前一个命令执行失败,后一个命令才会执行,注意这两个的区别,效果如下图:

shellml1

13.显示消耗内存/CPU最多的10个进程:

  1. ps aux | sort -nk +4 | tail
  2. ps aux | sort -nk +3 | tail

按内存从大到小排列查看进程:

ps -e -o "%C : %p : %z : %a"|sort -k5 -nr

按cpu利用率从大到小排列查看进程:

ps -e -o "%C : %p : %z : %a"|sort -nr

查看Apache的并发请求数及其TCP连接状态:

netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

查找占用磁盘IO最多的进程:

wget -c http://linux.web.psi.ch/dist/scientific/5/gfa/all/dstat-0.6.7-1.rf.noarch.rpm
dstat -M topio -d -M topbio

查看linux系统或者mysql错误码表示的意思,如查看13错误码表示的意思:

perror 13

删除0字节文件:

find -type f -size 0 -exec rm -rf {} \;

杀掉80端口相关的进程:

lsof -i :80|grep -v "PID"|awk '{print "kill -9",$2}'|sh

清除僵死进程

ps -eal | awk '{ if ($2 == "Z") {print $4}}' | kill -9

tcpdump 抓包 ,用来防止80端口被人攻击时可以分析数据:

# tcpdump -c 10000 -i eth0 -n dst port 80 > /root/pkts

查看PHP-CGI占用的内存总数:

total=0; for i in `ps -C php-cgi -o rss=`; do total=$(($total+$i)); done; echo "PHP-CGI Memory usage: $total kb"

查看当前有哪些进程;查看进程打开的文件:

ps -A ;lsof -p PID

查看ssh暴力攻击的ip和攻击次数

grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' /var/log/secure | sort | uniq -c

给我留言