目录
ps
常见用法:ps aufx
各个字段的含义:
USER:表示哪个用户启动了这个进程
PID :进程ID
%CPU:进程CPU的占用率
%MEM:进程物理内存的占用率
VSZ :进程占用的虚拟内存量 (Kbytes)
RSS :进程当前实际上占用了多少内存
TTY :进程是在哪个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
STAT:该程序目前的状态,主要的状态有
R :运行;该程序目前正在运作,或者是可被运作
D :不可中断:一般是IO进程
S :中断;该程序目前正在睡眠当中 (可说是 idle 状态),但可被某些讯号 (signal) 唤醒。
T :停止:该程序目前正在侦测或者是停止了
Z :僵尸:该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (僵尸) 程序的状态
START:该进程启动的时间点
TIME :进程从启动后到现在,实际占用CPU的总时间
COMMAND:启动该进程的命令
可参考帖子:https://www.jianshu.com/p/943b90150c10
top
直接参考帖子:https://www.cnblogs.com/peida/archive/2012/12/24/2831353.html
解析:
-b: batch 模式,可以重定向到文件中
-n:一共取2次top数据
-d:每次top数据间隔为3秒
top -H -n 4 -d 3 -b > top.txt
find
常用选项及用法:
-name
按照文件名查找文件。
find /dir -name filename 在/dir目录及其子目录下面查找名字为filename的文件
find . -name "*.c" 在当前目录及其子目录(用“.”表示)中查找任何扩展名为“c”的文件
-perm
按照文件权限来查找文件。
find . -perm 755 在当前目录下查找文件权限位为755的文件,即文件属主可以读、写、执行,其他用户可以读、执行的文件
-prune
使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。
find /apps -path "/apps/bin" -prune -o 在/apps目录下查找文件,但不希望在/apps/bin目录下查找
find /usr/sam -path "/usr/sam/dir1" -prune -o 在/usr/sam目录下查找不在dir1子目录之内的所有文件
-user
按照文件属主来查找文件。
find ~ -user sam 在$HOME目录中查找文件属主为sam的文件
-group
按照文件所属的组来查找文件。
find /apps -group gem 在/apps目录下查找属于gem用户组的文件
-mtime -n +n
按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。
find / -mtime -5 在系统根目录下查找更改时间在5日以内的文件
find /var/adm -mtime +3 在/var/adm目录下查找更改时间在3日以前的文件
-nogroup
查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。
find / –nogroup
-nouser
查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。
find /home -nouser
-newer file1 ! file2
查找更改时间比文件file1新但比文件file2旧的文件。
-type
查找某一类型的文件,诸如:
b - 块设备文件。
d - 目录。
c - 字符设备文件。
p - 管道文件。
l - 符号链接文件。
f - 普通文件。
find /etc -type d 在/etc目录下查找所有的目录
find . ! -type d 在当前目录下查找除目录以外的所有类型的文件
find /etc -type l 在/etc目录下查找所有的符号链接文件
-size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。
find . -size +1000000c 在当前目录下查找文件长度大于1 M字节的文件
find /home/apache -size 100c 在/home/apache目录下查找文件长度恰好为100字节的文件
find . -size +10 在当前目录下查找长度超过10块的文件(一块等于512字节)
-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
find / -name "CON.FILE" -depth 它将首先匹配所有的文件然后再进入子目录中查找
-mount:在查找文件时不跨越文件系统mount点。
find . -name "*.XC" -mount 从当前目录开始查找位于本文件系统中文件名以XC结尾的文件(不进入其他文件系统)
-follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。
find与xargs:
查找系统中的每一个普通文件,然后使用xargs命令来测试它们分别属于哪类文件
find . -type f -print | xargs file
在整个系统中查找内存信息转储文件(core dump) ,然后把结果保存到/tmp/core.log 文件中:
find / -name "core" -print | xargs echo "" >/tmp/core.log
用grep命令在所有的普通文件中搜索hostname这个词
find . -type f -print | xargs grep "hostname"
删除3天以前的所有东西 (find . -ctime +3 -exec rm -rf {} \;)
find ./ -mtime +3 -print|xargs rm -f –r
删除文件大小为零的文件
find ./ -size 0 | xargs rm -f &
find命令配合使用exec和xargs可以使用户对所匹配到的文件执行几乎所有的命令。
环境上查找函数对应的so
find . -name *.so | xargs nm -AD {} | grep "T PAE_ChannelSend"
find . -name *.so | xargs nm -AD {} | grep "B g_aucVrpMemPt"
find *.so | xargs nm -AD {} | grep "T PAE_ChannelSend"
find *.so | xargs nm -AD {} | grep "B g_aucVrpMemPt"
参考帖子:https://www.cnblogs.com/skynet/archive/2010/12/25/1916873.html
grep
常用选项:
-?
同时显示匹配行上下的?行,如:grep -2 pattern filename同时显示匹配行的上下2行。
-c,--count
只打印匹配的行数,不显示匹配的内容。
-h,--no-filename
当搜索多个文件时,不显示匹配文件名前缀。
-i,--ignore-case
忽略大小写差别。
-l,--files-with-matches
打印匹配模板的文件清单。
-L,--files-without-match
打印不匹配模板的文件清单。
-n,--line-number
在匹配的行前面打印行号。
-s,--silent
不显示关于不存在或者无法读取文件的错误信息。
-v,--revert-match
反检索,只显示不匹配的行。
-w,--word-regexp
如果被\<和\>引用,就把表达式做为一个单词搜索。
-V,--version
显示软件版本信息
-c
统计匹配的行数,如果是查找多个文件,grep -c会统计每个文件匹配的行数;每行一个文件的列出来.
grep | wc -l
统计匹配的行数,如果是查找多个文件,列出总的统计数字。
另外grep -c 要比 grep | wc -l快一点。
常见用法:
ls -l | grep '^a' 通过管道过滤ls -l输出的内容,只显示以a开头的行。
grep 'test' d* 显示所有以d开头的文件中包含test的行。
grep 'test' aa bb cc 显示在aa,bb,cc文件中匹配test的行。
grep '[a-z]' aa 显示所有包含每个字符串至少有5个连续小写字符的字符串的行。
grep 'w(es)t.*' aa 如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*),这些字符后面紧跟着另外一个es(),找到就显示该行。如果用egrep或grep -E,就不用""号进行转义,直接写成'w(es)t.*'就可以了。
grep -i pattern files :不区分大小写地搜索。默认情况区分大小写
grep -l pattern files :只列出匹配的文件名,
grep -L pattern files :列出不匹配的文件名,
grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’),
grep -C number pattern files :匹配的上下文分别显示[number]行,
grep pattern1 | pattern2 files :显示匹配 pattern1 或 pattern2 的行
grep pattern1 files | grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行
正则表达式元字符集(基本集)
^ 锚定行的开始 如:'^grep'匹配所有以grep开头的行。
$ 锚定行的结束 如:'grep$'匹配所有以grep结尾的行。
. 匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。
* 匹配零个或多个先前字符 如:' *grep'匹配所有一个或多个空格后紧跟grep的行。 .*一起用代表任意字符。
[] 匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。
[^] 匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-F和H-Z的一个字母开头,紧跟rep的行。
\(..\) 标记匹配字符,如:'\(love\)',love被标记为1。
\< 锚定单词的开始,如:'\<grep'匹配包含以grep开头的单词的行。
\> 锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。
x\{m\} 连续重复字符x,m次,如:'o\{5\}'匹配包含连续5个o的行。
x\{m,\} 连续重复字符x,至少m次,如:'o\{5,\}'匹配至少连续有5个o的行。
x\{m,n\} 连续重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配连续5--10个o的行。
\w 匹配一个文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。
\W w的反置形式,匹配一个非单词字符,如点号句号等。\W*则可匹配多个。
\b 单词锁定符,如: '\bgrep\b'只匹配grep,即只能是grep这个单词,两边均为空格。
tail
常见用法:
实时刷新log
tail -f test.log
实时刷新最新500条log
tail -500f test.log
显示最后5条log(两种写法)
tail -n 5 test.log
tail -5 test.log
显示第五条后面的所有log
tail -n +5 test.log
参考帖子:https://www.cnblogs.com/peida/archive/2012/11/07/2758084.html
tar
常见用法:
压缩一个文件 yyTest.ini
tar -zcvf yyTest.tar.gz yyTest.ini
压缩多个文件 yyTest.ini readme.ini
tar -zcvf all.tar.gz yyTest.ini readme.ini
压缩文件夹 yyTest/
tar -zcvf yyTest.tar.gz yyTest/
将当前目录,所有jpg文件打包成yyTestjpg.tar
tar -cvf yyTestjpg.tar.gz *.jpg
将当前目录,所有jpg文件压缩打包成yyTestjpg.tar.gz
tar -zcvf yyTestjpg.tar.gz *.jpg
解压 yyTestjpg.tar
tar -xvf yyTestjpg.tar
解压 yyTestjpg.tar.gz
tar -zxvf yyTestjpg.tar.gz
参考帖子:https://www.cnblogs.com/jyaray/archive/2011/04/30/2033362.html
https://www.cnblogs.com/peida/archive/2012/11/30/2795656.HTML
zip
常用选项:
-r
递归压缩目录,及将制定目录下的所有文件以及子目录全部压缩。
-m
将文件压缩之后,删除原始文件,相当于把文件移到压缩文件中。
-v
显示详细的压缩过程信息。
-q
在压缩的时候不显示命令的执行过程。
-压缩级别
压缩级别是从 1~9 的数字,-1 代表压缩速度更快,-9 代表压缩效果更好。
-u
更新压缩文件,即往压缩文件中添加新文件。
常用命令:
将当前目录下的指定目录,压缩为 .zip文件:
zip -q -r foo.zip <dir name>
将指定目录下的所有文件及其文件夹,压缩为.zip 文件:
zip -q -r foo.zip /<path to dir>
查看压缩包内容:
unzip -v foo.zip
将压缩文件在指定目录下解压缩,如果已有相同的文件存在,要求 unzip命令不覆盖原先的文件。
unzip -n foo.zip -d /<file to dir>
将压缩文件在当前目下解压,如果已有相同的文件,不询问,直接覆盖。
unzip -o foo.zip
history
常用命令
显示历史记录
history
显示前10条
history | head -10
显示后5条
history | tail -5
使用 HISTSIZE 控制历史命令记录的总行数
export HISTSIZE=100000
export HISTFILESIZE=100000
使用HISTSIZE禁用history
export HISTSIZE=0
使用HISTIGNORE忽略历史中的特定命令
export HISTIGNORE="pwd:ls:"
清除历史记录
history -c
将当前所有历史记录写入历史文件中,默认写入 ~/.bash_history
history -w
cat ~/.bash_history
快捷键-使用CTRL+R搜索历史
从命令历史中执行一个指定的命令
!number
参考帖子:https://www.cnblogs.com/cherishry/p/5886035.html
watch
参考帖子:https://www.cnblogs.com/peida/archive/2012/12/31/2840241.html
tail
参考帖子:https://www.cnblogs.com/peida/archive/2012/11/07/2758084.html
chown
语法:
chown [选项]... [所有者][:[组]] 文件...
选项:
-c或——changes:效果类似“-v”参数,但仅回报更改的部分;
-f或--quite或——silent:不显示错误信息;
-h或--no-dereference:只对符号连接的文件作修改,而不更改其他任何相关文件;
-R或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理;
-v或——version:显示指令执行过程;
--dereference:效果和“-h”参数相同;
--help:在线帮助;
--reference=<参考文件或目录>:把指定文件或目录的拥有者与所属群组全部设成和参考文件或目录的拥有者与所属群组相同;
--version:显示版本信息。
参数:
用户:组:指定所有者和所属工作组。当省略“:组”,仅改变文件所有者;
文件:指定要改变所有者和工作组的文件列表。支持多个文件和目标,支持shell通配符。
chmod
语法:
chmod [-cfvR] [--help] [--version] mode file...
参数说明
mode : 权限设定字串,格式如下 :
[ugoa...][[+-=][rwxX]...][,...]
其中:
u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
其他参数说明:
-c : 若该文件权限确实已经更改,才显示其更改动作
-f : 若该文件权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)
--help : 显示辅助说明
--version : 显示版本
su
语法:
su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]]
参数说明:
-f 或 --fast 不必读启动档(如 csh.cshrc 等),仅用于 csh 或 tcsh
-m -p 或 --preserve-environment 执行 su 时不改变环境变数
-c command 或 --command=command 变更为帐号为 USER 的使用者并执行指令(command)后再变回原来使用者
-s shell 或 --shell=shell 指定要执行的 shell (bash csh tcsh 等),预设值为 /etc/passwd 内的该使用者(USER) shell
--help 显示说明文件
--version 显示版本资讯
- -l 或 --login 这个参数加了之后,就好像是重新 login 为该使用者一样,大部份环境变数(HOME SHELL USER等等)都是以该使用者(USER)为主,并且工作目录也会改变,如果没有指定 USER ,内定是 root
USER 欲变更的使用者帐号
ARG 传入新的 shell 参数
df/du
一.统计磁盘整体情况,包括磁盘大小,已使用,可用。命令“df”
1.命令"df -lh"使用这个命令会更清楚磁盘使用情况
2.命令"df -a"是全部的文件系统的使用情况
3.命令"df -i"显示inode信息
4.命令"df -k"已字节数显示区块占用情况
5.查看当前目录"df -h",统计每个目录下磁盘的整体情况
6.查看指定目录.在命令后直接放目录名,比如查看“usr”目录使用情况:"df -h /usr/",统计了指定目录一使用情况,及分配的最大空间
二.具体查看文件夹的占用情况。命令“du”
1.命令"du --max-depth=1 -h"查看当前目录每个文件夹的情况
2.指定目录.只要在命令后直接根目录名,以目录“/usr”为例,命令如下:"du --max-depth=1 -h /usr/"
3.计算文件夹大小.为了快算显示,同时也只是想查看目录整体占用大小。可以直接使用"du -sh" 命令,如果想查看指定目录,直接在命令后根目录即可。命令:"du -sh /usr/"
cpu
# 总核数 = 物理CPU个数 X 每颗物理CPU的核数
# 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数
# 查看物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
# 查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq
# 查看逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l
查看CPU信息(型号)
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
查看内存信息
# cat /proc/meminfo
如何查看Linux 内核
uname -a
cat /proc/version
查看机器型号(机器硬件型号)
dmidecode | grep "Product Name"
dmidecode
cp
长选项必须使用的参数对于短选项时也是必需使用的。
-a, --archive 等于-dR --preserve=all
--attributes-only 只拷贝文件属性,不拷贝文件内容
--backup[=CONTROL 为每个已存在的目标文件创建备份
-b 类似--backup 但不接受参数
--copy-contents 在递归处理是复制特殊文件内容
-d 等于--no-dereference --preserve=links
-f, --force 如果目标文件无法打开则将其移除并重试(当 -n 选项
存在时则不需再选此项)
-i, --interactive 覆盖前询问(使前面的 -n 选项失效)
-H 跟随源文件中的命令行符号链接
-l, --link 链接文件而不复制
-L, --dereference 总是跟随符号链接
-n, --no-clobber 不要覆盖已存在的文件(使前面的 -i 选项失效)
-P, --no-dereference 不跟随源文件中的符号链接
-p 等于--preserve=模式,所有权,时间戳
--preserve[=属性列表 保持指定的属性(默认:模式,所有权,时间戳),如果
可能保持附加属性:环境、链接、xattr 等
-c same as --preserve=context
--sno-preserve=属性列表 不保留指定的文件属性
--parents 复制前在目标目录创建来源文件路径中的所有目录
-R, -r, --recursive 递归复制目录及其子目录内的所有内容
--reflink[=WHEN] 控制克隆/CoW 副本。请查看下面的内如。
--remove-destination 尝试打开目标文件前先删除已存在的目的地
文件 (相对于 --force 选项)
--sparse=WHEN 控制创建稀疏文件的方式
--strip-trailing-slashes 删除参数中所有源文件/目录末端的斜杠
-s, --symbolic-link 只创建符号链接而不复制文件
-S, --suffix=后缀 自行指定备份文件的后缀
-t, --target-directory=目录 将所有参数指定的源文件/目录
复制至目标目录
-T, --no-target-directory 将目标目录视作普通文件
-u, --update copy only when the SOURCE file is newer
than the destination file or when the
destination file is missing
-v, --verbose explain what is being done
-x, --one-file-system stay on this file system
-Z, --context=CONTEXT set security context of copy to CONTEXT
--help 显示此帮助信息并退出
--version 显示版本信息并退出
默认情况下,源文件的稀疏性仅仅通过简单的方法判断,对应的目标文件目标文件也被为稀疏。
这是因为默认情况下使用了--sparse=auto 参数。如果明确使用
--sparse=always 参数则不论源文件是否包含足够长的0 序列也将目标文件创文
建为稀疏件。
使用--sparse=never 参数禁止创建稀疏文件。
当指定了--reflink[=always] 参数时执行轻量化的复制,即只在数据块被修改的
情况下才复制。如果复制失败或者同时指定了--reflink=auto,则返回标准复制模式。
备份文件的后缀为"~",除非以--suffix 选项或是SIMPLE_BACKUP_SUFFIX
环境变量指定。版本控制的方式可通过--backup 选项或VERSION_CONTROL 环境
变量来选择。以下是可用的变量值:
none, off 不进行备份(即使使用了--backup 选项)
numbered, t 备份文件加上数字进行排序
existing, nil 若有数字的备份文件已经存在则使用数字,否则使用普通方式备份
simple, never 永远使用普通方式备份
linux常用命令 | |
---|---|
系统信息 | |
arch | 显示机器的处理器架构 |
uname -m | 显示机器的处理器架构(2) |
uname -r | 显示正在使用的内核版本 |
date | 显示系统日期 |
关机、重启以及登出 | |
shutdown -h now | 关闭系统(1) |
init 0 | 关闭系统(2) |
telinit 0 | 关闭系统(3) |
shutdown -r now | 重启(1) |
reboot | 重启(2) |
logout | 注销 |
find | |
whereis halt | 显示一个二进制文件、源码或man的位置 |
which halt | 显示一个二进制文件或可执行文件的完整路径 |
find . -name *.h | xargs grep XXX | 查找当前目录下所有.h文件中包含XXX的.h |
grep | |
zgrep -i -E -h "wall_perf.c|http_perf.c" * > perf.log | |
chmod | |
chown user1:group1 file1 | 改变一个文件的所有人和群组属性 |
chmod | 改变文件权限 |
打包和压缩文件 | |
tar -xvf xxx.tar | 解压tar |
ls命令 | |
ls -ltr 按时间顺序查看文件 | |
http://3ms.huawei.com/km/blogs/details/5649191 |