目录
一、磁盘空间、文件分区(挂载点)、大小、压缩
二、文件压缩与解压
三、查看进程、内存、cpu
四、find 查找文件、grep搜索文件内容
五、wc/more/cat/tail/head显示文件内容
六、Unclassified
八、shell案例
九、Other常用
一、磁盘空间、文件分区(挂载点)、大小、压缩
1.查看磁盘剩余空间大小
- df -lh
2.查看文件夹/文件分区(挂载点)
- df <文件(夹)路径>
3.查看文件夹/文件大小
- du log2012.log 显示指定文件所占空间
- du -m scf 查看指定目录的所占空间
- du -s 只显示总和的大小
- du -h test 方便阅读的格式显示
- du -ah test 文件和目录都显示
- du -c log30.tar.gz log31.tar.gz 显示各自占用磁盘空间的大小,并统计它们总大小
- du|sort -nr|more 按照空间大小排序
- du -h --max-depth=1 输出当前目录下各个子目录所使用的空间
- du -m xx.txt #以M单位显示大小
- ls -lh xx.txt
4.列出文件夹内所有文件大小
- ls -l #以K查看文件大小
- ls -lh #以M查看文件大小
- ll -h #以G查看文件大小
- ls -lhS #按大到小排序
5.列出指定文件、统计指定文件数量
- (1)查看当前目录下的文件数量(包含子目录中的文件) 注意:R,代表子目录
- ls -lR|grep "^-"| wc -l
- (2)# 查看当前目录下的文件数量(不包含子目录中的文件)
- ls -l|grep "^-"| wc -l
- (3)# 查看当前目录下的文件夹目录个数(不包含子目录中的目录),同上述理,如果需要查看子目录的,加上R
- ls -l|grep "^d"| wc -l
- (4)统计所有以“20161124”开头的目录下的全部文件数量
- ls -lR 20161124*/|grep "^-"| wc -l
- grep "^d"表示目录,"^-"表示文件
二、文件压缩与解压
1.rar压缩、unrar解压
- (1)ubuntu下安装 rar/unrar
- sudo apt-get install rar
- sudo apt-get install unrar
- (2)rar用于压缩,unrar用于解压
- rar a test.rar
- unrar x test.rar
2.shell常用压缩方法
- tar –cvf jpg.tar *.jpg 将所有jpg文件打包成tar.jpg
- tar –czf jpg.tar.gz *.jpg 将所有jpg文件打包成jpg.tar后,并用gzip压缩成jpg.tar.gz
- tar –cjf jpg.tar.bz2 *.jpg 将所有jpg文件打包成jpg.tar后,并用bzip2压缩成jpg.tar.bz2
- tar –cZf jpg.tar.Z *.jpg 将所有jpg文件打包成jpg.tar后,并用compress压缩成jpg.tar.Z
- zip jpg.zip *.jpg zip格式的压缩,需要先下载zip for linux
3.shell常用解压方法
- tar –xvf file.tar 解压 tar包
- tar -xzvf file.tar.gz 解压tar.gz
- tar -xjvf file.tar.bz2 解压 tar.bz2
- tar –xZvf file.tar.Z 解压tar.Z
- unrar e file.rar 解压rar
- unzip file.zip 解压zip
三、查看进程、内存、cpu
1.top/htop 查看内存、cpu / q 退出
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcuEzM0EDOxMjM2IjMxAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
2.ps 查看当前所有进程
- ps -ef
- ps -ef | grep python
- ps -aux
3.Linux僵尸进程排查
- #yum install -y htop iotop smem
- #查看进程使用的内存量
- smem -k -s uss
- #查看进程使用的内部百分比
- smem -p -s uss
- #查看每个用户使用的内存量
- smem -u -k
- #查看单个进程使用的内存量
- smem -P ./perf -k
- #获取内存使用最大的10个进程
- ps aux|head -1;ps aux|sort -nr -k4|head -10
- #获取CPU使用最大的10个进程
- ps aux|head -1;ps aux|sort -nr -k3|head -10
- #查找僵尸进程
- ps -e -o stat,ppid,pid,cmd|grep -e '^[zZ]'
- #杀死僵死进程
- ps -e -o stat,ppid,pid,cmd|grep -e '^[zZ]'|awk '{print $2}'|xargs kill -9
四、find 查找文件、grep搜索文件内容
1.grep列出主目录下所有内容含有sku的文件
- grep 'sku' -r /
2.find查找文件合集
- find /etc/ -name passwd #查找/etc/下名称中带有passwd的文件
- find /etc -maxdepth 1 -name passwd #查找/etc/下名称中带有passwd的文件,查找一层。
- find /etc -name *.conf #查找/etc/下名称中带有*.conf的文件
- find /etc -maxdepth 2 -name *.conf #查找/etc/下名称中带有*.conf的文件,且查找两层,包括一层
- find /etc -maxdepth 2 -mindepth 2 -name *.conf #查找/etc/下名称中带有*.conf的文件,且只查找第二层
- find /mnt -group tony #查找/mnt中所有组是tony用户的文件
- find /mnt -user student -group student #查找/mnt中所有人和所有组都是student的文件
- find /mnt -not -user student #查找/mnt中所有人不是student用户的文件
- find /mnt -not -user student -o -group tony #查找/mnt中所有人不是student用户或者所有组是tony用户的文件
- find /mnt -size 20K #查找/mnt文件大小近似20k的文件
- find /mnt -size +20K #查找/mnt文件大小大于20k的文件
- find /mnt -size -20K #查找/mnt文件大小小于20k的文件
- find /mnt -type d #按type查找/mnt中目录
- find /mnt -type f #按type查找/mnt中文件
- find /mnt -cmin 10 #查找/mnt中十分钟左右修改的
- find /mnt -cmin +10 #查找/mnt中十分钟以上修改的
- find /mnt -cmin -10 #查找/mnt中十分钟以内修改的
- find /mnt -ctime 10 #查找/mnt中十天左右修改的
- find /mnt -ctime +10 #查找/mnt中十天以上修改的
- find /mnt -ctime -10 #查找/mnt中十天以内修改的
- find /mnt/ -perm 444 #查找/mnt文件权限为444的文件
- find /mnt/ -perm -444 #查找/mnt中user有读的权限且group有读的权限且other有读的权限的文件。
- find /mnt/ -perm -004 #查找/mnt中other有读权限的文件
- find /mnt/ -perm -644 #查找/mnt中user有读写的权限且group至少有读权限且other有读的权限的文件
3.find按名字查找并搜索文件内容
- find / -type f -name "*.log" | xargs grep "ERROR"
- find ./ -name *sql | xargs grep sku
- find . | xargs grep "custom"
4.find查找大于5000K的文件
- find ./ -size +5000k -exec ls -ld {} \;
5.find查找小于5000K的csv文件
- find ./*.csv -size -300k -exec ls -ld {} \;
6.find查找小于100K的csv文件并删除
- find ./*.csv -size -300k -exec rm {} \;
7.find统计查找到的文件数量
- find . -name "*.csv" | wc -l
8.find查找到指定权限的文件
- find ./ -user lisq -exec chmod 775 {} \; (分号不可少)
9.find查找出一天前的文件并删除
- find ./ -mtime +1 -name "*.html" -exec rm -rf {} \;
- -mtime:标准语句写法
- +10:查找10天前的文件,这里用数字代表天数,+30表示查找30天前的文件
- -exec:固定写法
- rm -rf:强制删除文件,包括目录
- {} \; :固定写法,一对大括号+空格+/+;
10.find查找出文件并移走
- find . -name '10-*.dat' -exec mv {} ../ \;
- -exec mv {} /mnt/mp3 \; - 运行mv命令。
- {} - 字符 '{}' 代表find到的所有内容。
- ../表示当前用户目录的上一级目录
- \; - 结束 /bin/mv 命令。
- 11.mv移走文件夹中指定数量的文件
- mv `ls | head -50000` ../html_2/
五、wc/more/cat/tail/head显示文件内容
1.wc -l 显示文件的行数
- wc -l test.txt 显示文件的行数
2.ls -l | wc -l 显示目录下的文件数
- ls -l | wc -l 显示目录下的文件数
3.tail 显示指定文件末尾内容
- 例1:显示文件最后5行内容 tail -5 log2014.log
- 例2:从第5行开始显示文件 tail -n +5 log2014.log
- 例3:tail -f log2014.log 该命令不断去读最新内容,这样有实时监视的效果,用Ctrl+c来终止
4. head 显示档案的开头内容
- 例1:显示文件的前n行 head -5 log2014.log
- 例2:显示文件前n个字节 head -c 20 log2014.log
- 例3:文件的除了最后n个字节以外的内容 head -c -32 log2014.log
- 例4:输出文件除了最后n行的全部内容 head -n -6 log2014.log
5. cat 把档案串连接后传到基本输出
- (1)语法:cat [选项] [文件]
- -n 或 --number 由 1 开始对所有输出的行数编号
- -b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号
- -s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
- (2)例子: cat -n textfile1 > textfile2 把textfile1的内容加上行号后输入textfile2这个档案里
- cat -b textfile1 textfile2 >> textfile3 把textfile1和textfile2的内容加上行号(空白行不加)后将内容输入到textfile3这个档案里
6.more按页查看文件内容
- 实例1:显示文件中从第3行起的内容 more +3 log2012.log
- 实例2:从文件中查找第一个出现 "day3" 字符串的行,并从该处前两行开始显示输出 more +/day3 log2012.log
- 实例3:设定每屏显示行数 more -5 log2012.log
- 实例4:列一个目录下的文件,由于内容太多,我们应该学会用more来分页显示。这得和管道 | 结合起来 ls -l | more -5
六、Unclassified
1.cut 剪载文本
(1)命令格式
- cut [option] filename
- cat filename | cut [option]
(2)语法
- -b:仅显示行中指定直接范围的内容;
- -c:仅显示行中指定范围的字符;
- -d:指定字段的分隔符,默认的字段分隔符为"TAB";
- -f:显示指定字段的内容;
- -n:与"-b"选项连用,不分割多字节字符;
- --complement:补足被选择的字节、字符或字段;
- --out-delimiter=<字段分隔符>:指定输出内容是的字段分割符;
- --help:显示指令的帮助信息;
- --version:显示指令的版本信息。
1)-f field_list:field_list为字段列表,指定需要提取的字段
2)-f N-:指从第N个字段到行尾
3)-f N-M:指从第N个字段到第M个字段
4)-f -N:指从行首到第N个字段
(3)案例
- cut -d ', ' -f 2 text.txt 以逗号分隔,取第2列
- cut -d ', ' -f1,2 text.txt 以逗号分隔,取第1,2列
2.split切割文件
- split生成的文件按规律命名及添加扩展名
- split p2_run.txt -l 1000 -d url_&&ls|grep url_|xargs -n1 -I {} mv {} {}.txt
八、shell案例
1.shell命令返回赋值给变量
(1)常用两种方式
- A=`ls -la` 反引号,运行里面的命令,并把结果返回给变量A
- A=$(ls -la) 等价于反引号
(2)例子
for element in $(ls -rlt GET_FBA_MYI_UNSUPPRESSED_INVENTORY_DATA-20200611*)
do
echo $element
done
#移走文件夹中1000个文件
for file in $(ls |head -1000)
do
mv $file /home/ubuntu/seo/csv/v1/
done
2.循环访问数组
my_array=(
GET_FBA_MYI_UNSUPPRESSED_INVENTORY_DATA-20200612-20200612.21203425722018425.juvo_us.txt
GET_FBA_MYI_UNSUPPRESSED_INVENTORY_DATA-20200612-20200612.21210780886018425.juvo_us.txt
GET_FBA_MYI_UNSUPPRESSED_INVENTORY_DATA-20200612-20200612.21199743596018425.juvo_us.txt
GET_FBA_MYI_UNSUPPRESSED_INVENTORY_DATA-20200612-20200612.21207515550018425.juvo_us.txt
)
for element in ${my_array[@]}
do
echo $element
grep B07YD1F2R8 $element
done
九、Other常用
1.linux查看与设定别名
(1)永久设置别名方法
- vi ~/.bashrc
- alias 别名='原命令'
- source ~/.bashrc #编辑完之后记得使环境变量生效
(2)删除别名
- unalias 别名
2.screen多重视窗
(1)常用screen参数
- screen -S yourname # 新建一个叫yourname的session
- screen -ls # 列出当前所有的session
- screen -r yourname # 回到yourname这个session
- screen -d yourname # 远程detach某个session
- screen -d -r yourname # 结束当前session并回到yourname这个session
(2)在session使用ctrl
- C-a ? # 显示所有键绑定信息
- C-a c # 创建一个新的运行shell的窗口并切换到该窗口
- C-a n # Next,切换到下一个 window
- C-a p # Previous,切换到前一个 window
- C-a 0..9 # 切换到第 0..9 个 window
- Ctrl+a [Space] # 由视窗0循序切换到视窗9
- C-a C-a # 在两个最近使用的 window 间切换
- C-a x # 锁住当前的 window,需用用户密码解锁
- C-a d # detach,暂时离开当前session,screen session 转到后台执行
- C-a z # 把当前session放到后台执行,用 shell 的 fg 命令则可回去。
- C-a w # 显示所有窗口列表
- C-a t # time,显示当前时间,和系统的 load
- C-a k # kill window,强行关闭当前的 window
- C-a [ # 进入 copy mode,在 copy mode 下可以回滚、搜索、复制就像用使用 vi 一样
- C-b Backward,PageUp
- C-f Forward,PageDown
- H(大写) High,将光标移至左上角
- L Low,将光标移至左下角
- 0 移到行首
- $ 行末
- w forward one word,以字为单位往前移
- b backward one word,以字为单位往后移
- Space 第一次按为标记区起点,第二次按为终点
- Esc 结束 copy mode
- C-a ] # paste,把刚刚在 copy mode 选定的内容贴上
3.scp用于Linux 之间复制文件和目录
mac to wiki
- scp -i /Users/lenhe/.ssh/id_rsa_us /Users/amzsearchme.zip [email protected]:/home/
wiki to mac
- scp -i /Users/lenhe/.ssh/id_rsa_us [email protected]:/home/ec2-user/len/log.zip /Users/
4.export指定vi打开crontab
- export EDITOR=vi;
- 或 export EDITOR="/usr/bin/vim" ;
5. file 辨识文件类型
- file xx.txt
6.diff 比较两文件差异
- 例1:比较两个文件 diff log2014.log log2013.log
- 例2:并排格式输出 diff log2013.log log2014.log-y -W 50
- 例3:上下文输出格式 diff log2013.log log2014.log-c
- 例4:统一格式输出 diff log2014.log log2013.log-u
- 例5:比较文件夹不同 difftest3 test6
- 例6:比较两个文件不同,并生产补丁 diff -ruN log2013.log log2014.log >patch.log
7.批量注释crontab
(1)全部注释
- control + v
- G 跳到最低
- shift + i
- 输入#
- esc 键
(2)取消全部注释
- control + v
- G
- d
- esc 键