Linux 命令大全
参考文章: 每天一个linux命令目录
目录
一、文件浏览命令
格式: 命令 [option] file
- cat 由第一行开始显示文件内容
- tac 从最后一行开始显示,tac 是 cat 的倒写
- nl 显示行号 -b a :空行也列出行号(类似 cat -n); -b t :非空行才列出行号(默认值);
- more 一页一页的显示文件内容 [空格键]下一页,[Backspace]上一页。 +n 从笫n行开始显示 -n 定义屏幕大小为n行 -c 清屏显示
- less 与 more 类似,但他可以往前翻页 [空格键] 滚动一行, [回车键] 滚动一页,[pagedown]: 下一页,[pageup]:上一页
- head 看头几行, -n 设定行数
- tail 看尾部几行 -f 循环读取 tail -100f catalina.out
- od 以二进制的方式读取文件内容
二、文件目录操作命令
1. mkdir -m:mode 设定权限 -p:parents 创建父级目录 mkdir -m 777 -p dir1/dir2
2. rm -r 递归 -f force 强行删除,忽略不存在的文件,系统不再提示 rm -rf dir
3. mv -b :覆盖前先备份 -f :force 强制覆盖 -i :询问是否覆盖 mv 1.txt 2.txt 可用于重命名
4. ls命令 列出目录中所有子目录和文件
-a, –all 列出目录下的所有文件,包括以.开头的隐含文件
-l 列出目录或文件的详细信息,包括文件的权限、所有者、文件大小等
-R, –recursive 递归查询 -r, –reverse 依相反次序排列 -t 以文件修改时间排序
-F 显示文件类型(File type),在列出的文件名后添加符号:/ 表明是一个目录;@ 表明是到其它文件的符号链接;* 表明是一个可执行文件。
ls -l s* 列出当前目录中所有以“s”开头的目录的详细内容
ls -F /opt/soft |grep /$ 只列出文件下的子目录
ls -ltr s* 列出目录下以s 开头的档案,愈新的排愈后面
ls | sed "s:^:`pwd`/:" 列出文件的绝对路径
5. tar 为linux的文件和目录创建档案
tar [主选项+辅选项] 文件或目录
主选项:【每条命令只能有一个主选项】
-c: --create 新建一个压缩文档,即打包 -x: --extract,--get 解压文件
-t: --list 查看压缩文档里的所有内容 -r:--append 向压缩文档里追加文件 -u:--update 更新原压缩包中的文件
辅助选项:
-z 支持gzip解压文件 -j 支持bzip2解压文件 -Z 支持compress解压文件
-v 显示操作过程 -f 指定压缩文件 -t 显示压缩文件的内容
-d 记录文件的差别 -W 确认压缩文件的正确性 -l 文件系统边界设置
-k 保留原有文件不覆盖 -m 保留文件不被覆盖
tar -cvf log.tar 1.log 2.log 仅打包,不压缩!
tar -tf log.tar 不解压的情况下查看
6. gzip
-a 使用ASCII文字模式 -d 解压文件 -l 列出压缩文件的详细信息 -r 递归处理 -v 显示指令执行过程
-num 用指定的数字num调整压缩的速度,-1或--fast表示最快压缩方法(低压缩比),-9或--best表示最慢压缩方法(高压缩比)。系统缺省值为6。
gzip * / gzip -dv * 压缩和解压缩文件或目录,若当前目录下有10个文件则生成10个.gz的压缩包,gzip没有打包功能!
三、文件查找命令
1. find命令 在目录结构中搜索文件
格式:find pathname -options [-print -exec -ok ...]
命令选项:
-name 按照文件名查找文件 -perm 按照文件权限来查找文件
-user 按照文件属主来查找文件 -group 按照文件所属的组来查找文件
-mtime (modify time)指文件内容被修改的时间 +n:大于n, -n:小于n
-atime (access time)文件被读取或者执行的时间 -ctime (change time)文件状态改变时间,如通过chmod修改文件属性
-type 查找某一类型的文件,f:普通文件,d:目录,p:管道文件,l:符号链接文件,c:字符设备文件,b:块设备文件
-size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计 -depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找
find -atime -2 查找2天内修改过的文件
find . -type f -name "*.log" 根据关键字和类型查找
find /opt/soft/ -perm 777 按照目录或文件的权限来查找文件
find . -size +1000c -print 查找当前目录大于1K的文件
2. which命令 查看可执行文件的位置
which指令会在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。 which pwd
3. whereis命令 定位文件在文件系统中的位置
-b 查找二进制文件 -m 帮助文件 -s 源代码文件 whereis -b svn
4. locate命令 配合数据库查看文件位置
locate和find功能类似,但locate是透过updatedb程序将硬盘中的所有档案和目录资料先建立一个索引数据库,在执行loacte时直接找该索引,查询速度会较快
locate pwd 查找和pwd相关的所有文件
locate /etc/sh 搜索etc目录下所有以sh开头的文件
四、文件权限设置命令
1. chmod命令
权限分为只读r、只写w 和 可执行x,用户分为 文件所有者u、同组用户g、其他用户o 和 所有的用户及群组a
1)文字设定法: chmod [who] [+ | - | =] [mode] 文件名
2)数字设定法: chmod [mode] 文件名
- 数字属性的mode为3个数字,按顺序表示(u)(g)(o)对应的权限。r=4,w=2,x=1 ,- 为0 表示删除权限
- rwx属性为4+2+1=7 ; rw-属性则4+2=6;r-x属性则4+1=5。
- chmod ug+w,o-x test.log ; chmod -R 777 dir
2. chgrp命令 (change group) 改变文件或目录所属的用户组
-c 当发生改变时输出调试信息 -f 不显示错误信息 -R 递归处理 -v 运行时显示详细的处理信息
--dereference 作用于符号链接的指向,而不是符号链接本身 --no-dereference 作用于符号链接本身
用户组的所有信息都存放在/etc/group文件中 cat /etc/group
chgrp -v group1 1.log
chgrp --reference=1.log 2.log 改变文件2.log的群组属性,使得文件2.log的群组属性和参考文件1.log的群组属性相同
3. chown命令(change owner) 改变文件或目录的所有者和所属的用户组
chown -R root /usr/tony
五、系统性能监控命令
1. top命令 能够实时显示系统中各个进程的资源占用状况,常用于服务端性能分析。
-u 指定用户名; -p 指定进程; -n 循环显示的次数
显示结果中的S 表示进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
2. free命令 显示系统使用和空闲的内存情况
-k 以KB为单位显示内存使用情况; -m 以MB为单位;-g 以GB为单位; -s<间隔秒数> 持续观察内存使用状况。
free -m -s 10
3. vmstat命令 显示关于内核线程、虚拟内存、磁盘、陷阱和 CPU 活动的统计信息。
-a:显示活跃和非活跃内存
-f:显示从系统启动至今的fork数量 。
-m:显示slabinfo
-n:只在开始时显示一次各字段名称。
-s:显示内存相关统计信息及多种系统活动数量。
-d:显示磁盘相关统计信息。
Procs(进程) r: 运行队列中进程数量 b: 等待IO的进程数量
Memory(内存) swpd: 使用虚拟内存大小 free: 可用内存大小 buff: 用作缓冲的内存大小 cache: 用作缓存的内存大小
Swap si: 每秒从交换区写到内存的大小 so: 每秒写入交换区的内存大小
IO bi: 每秒读取的块数 bo: 每秒写入的块数
系统 in: 每秒中断数,包括时钟中断 cs: 每秒上下文切换数。
CPU us: 用户进程执行时间(user time) sy: 系统进程执行时间 id: 中央处理器的空闲时间(包括IO等待时间) wa: 等待IO时间 (以百分比表示)
4. iostat命令 统计系统的磁盘操作活动
查看CPU、网卡、tty设备、磁盘、CD-ROM 等等设备的活动情况, 负载信息。但不能指定进程。
格式:iostat[参数][时间][次数]
-C 显示CPU使用情况 -d 显示磁盘使用情况
-k 以 KB 为单位显示 -m 以 M 为单位显示
-N 显示磁盘阵列(LVM) 信息 -n 显示NFS 使用情况
-p[磁盘] 显示磁盘和分区的情况 -t 显示终端和CPU的信息
-x 显示详细信息 -V 显示版本信息
(1) iostat -2 -3 每隔2秒刷新显示,且显示3次
%user:CPU处在用户模式下的时间百分比 %nice:CPU处在带NICE值的用户模式下的时间百分比 %system:系统模式
%iowait:CPU等待输入输出完成时间的百分比 %steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比 %idle:CPU空闲时间百分比
备注:如果%iowait的值过高,表示硬盘存在I/O瓶颈,%idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。
(2) iostat -d -x -k 1 1 查看设备使用率(%util)、响应时间(await)
每秒用于 I/O 操作的时间比,如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。
5. lsof命令 列出当前系统打开的文件
-c <进程名> 列出指定进程所打开的文件; -p <进程号> 列出指定进程号所打开的文件
-u username 显示所属user进程打开的文件; -g gid 显示归属gid的进程情况
+d <目录> 显示目录下被进程打开的文件 +D<目录> 同上,但是会搜索目录下的所有目录,时间相对较长
-a 表示两个参数都必须满足时才显示结果 -i 用以显示符合条件的进程情况
lsof -d <FD> 0表示标准输入,1表示标准输出,2表示标准错误,所以大多数应用程序所打开的文件的 FD 都是从 3 开始
lsof -c mysql -c apache 列出一个或多个程序进程所打开的文件信息
lsof -i 列出所有的网络连接 lsof -i tcp/udp/:3306/udp:55/tcp:80
lsof -i @peida.linux:20,21,22,25,53,80 -r 3 每隔3秒打印peida.linux上端口为:20,21,22,25,53,80相关的所有文件信息
6. ps (Process Status) 列出系统当前运行的进程。
-a 显示同一终端下的所有程序 -aux 显示所有包含其他使用者的行程 -f 显示程序间的关系 -u 指定用户
ps -ef|grep tomcat ps 与grep常用组合用法,查找特定进程
ps -aux --sort -pcpu | less 根据 CPU 使用率按降序排序
ps -aux --sort -pmem | less 根据内存使用率按降序排序
六、网络查看命令
1. ifconfig命令 获取或修改网络接口配置信息
格式:ifconfig [网络设备] [参数]
ifconfig 显示网络设备信息
ifconfig eth0 up/down 启动/关闭指定网卡
ifconfig eth0 add/del 33ffe:3240:800:1005::2/64 为网卡eth0配置/删除IPv6地址
ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE 修改MAC地址
ifconfig eth0 192.168.120.56 netmask 255.255.255.0 broadcast 192.168.120.255 配置IP地址,添加子掩码和广播地址
ifconfig eth0 mtu 1500 设置最大传输单元
ifconfig eth0 arp/-arp 启用/关闭ARP协议
2. ip命令 ip命令用来显示或操纵Linux主机的路由、网络设备、策略路由和隧道。[替换ifconfig]
3. netstat命令 显示网络连接状态及其相关信息
-a 显示所有socket,包括正在监听的。 -c 每隔1秒就重新显示一遍,直到用户中断它。
-i 显示所有网络接口的信息 -n 以网络IP地址代替名称,显示出网络连接情形。
-t 显示TCP协议的连接情况 -u 显示UDP协议的连接情况。
-p 显示建立相关连接的程序名和PID。 -b 显示在创建每个连接或侦听端口时涉及的可执行程序。 -o显示与每个连接相关的所属进程 ID。
-e 显示以太网统计。此选项可以与 -s 选项结合使用。 -s 显示每个协议的统计。
-f 显示外部地址的完全限定域名(FQDN)。 -r显示核心路由表,格式同“route -e”
netstat -l 显示监听的套接口
netstat -a | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 统计机器中网络连接各个状态个数
netstat -ap | grep ssh 找出程序运行的端口
netstat -anpt | grep ':8080' 找出运行在指定端口的进程
4. ss命令 (Socket Statistics) 用来获取socket统计信息 [替换netstat]
ss可以显示和netstat类似的内容。但它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。ss比netstat快的主要原因是,netstat是遍历/proc下面每个PID目录,ss直接读/proc/net下面的统计信息。可以使用 time ss 和 time netstat -at 对比两个命令的效率。
ss常用参数和netstat类似,如-anp
5. ping命令 用来测试与目标主机的连通性
ping -c 10 -i 0.5 192.168.120.206 -c 指定次数 -i 间隔的秒数
ping -b 192.168.120.1 ping网关,可用route查看网关地址
6. telnet命令 远程登录
telnet因为采用明文传送报文,安全性不好,很多Linux服务器都不开放telnet服务,而改用更安全的ssh方式了
telnet <ip/hostname>
7. ssh命令 远程登录
8. rcp命令 (remote file copy) 远程文件拷贝
rcp [参数] [源文件] [目标文件] -r 递归 -x 为传送的所有数据打开DES加密 -p 试图保留源文件的修改时间和模式
rcp -r /home/root/dir hostname:/home/root/
9. scp命令 (secure copy) 远程文件拷贝
scp [参数] [原路径] [目标路径]
scp root@192.168.120.204:/home/root/test.tar.gz /home/root/ 从远处复制文件到本地目录, scp传输是加密的
10. route命令 显示和操作IP路由表
route -n 显示当前路由
route add/del default gw 192.168.120.240 添加/删除默认网关
route add/del -net 224.0.0.0 netmask 240.0.0.0 dev eth0 添加/删除网关/设置网关
route add/del -net 224.0.0.0 netmask 240.0.0.0 reject 添加/删除一条屏蔽的路由,目的地址为 224.x.x.x 将被拒绝
11. traceroute命令 检测发出数据包的主机到目标主机之间所经过的网关
-q: 设置向每个网关发送的探测包个数(缺省为3) -m 设置跳数
以下返回结果每个纪录就是一跳 ,每跳表示一个网关,我们看到每行有三个时间,其实就是3个数据包对映的网关响应时间。
[root@localhost ~]# traceroute www.baidu.com traceroute to www.baidu.com (61.135.169.125), 30 hops max, 40 byte packets 1 192.168.74.2 (192.168.74.2) 2.606 ms 2.771 ms 2.950 ms 2 211.151.56.57 (211.151.56.57) 0.596 ms 0.598 ms 0.591 ms 3 211.151.227.206 (211.151.227.206) 0.546 ms 0.544 ms 0.538 ms 4 210.77.139.145 (210.77.139.145) 0.710 ms 0.748 ms 0.801 ms 5 202.106.42.101 (202.106.42.101) 6.759 ms 6.945 ms 7.107 ms 6 61.148.154.97 (61.148.154.97) 718.908 ms * bt-228-025.bta.net.cn (202.106.228.25) 5.177 ms 7 124.65.58.213 (124.65.58.213) 4.343 ms 4.336 ms 4.367 ms 8 202.106.35.190 (202.106.35.190) 1.795 ms 61.148.156.138 (61.148.156.138) 1.899 ms 1.951 ms 9 * * * 10 * * *
七、linux 其他命令
1. grep 文本搜索
ps -ef|grep -c svn 查找指定进程个数
cat test.txt | grep -nf key.txt 从文件中读取关键词对test.txt进行搜索, 且显示行号
grep 'linux' test1.txt test2.txt 从多个文件中查找关键词
cat test.txt |grep ^[^u] 输出非u开头的行内容
cat test.txt |grep hat$ 输出以hat结尾的行内容
2. wc 统计指定文件中的字节数、字数、行数
-c 统计字节数。 -m 统计字符数。这个标志不能与 -c 标志一起使用。
-l 统计行数。 -w word统计单词数。计算由空白、跳格或换行字符分隔的字符串数量。
wc test.txt 显示:行数 单词数 字节数 文件名
ls -l | wc -l 统计当前目录下的文件数
3. watch 周期性执行命令/定时执行命令
-n或--interval 指定间隔的时间(缺省2秒) -d或--differences 会高亮显示变化的区域
watch -n 5 -d 'cat /proc/loadavg' 每10秒输出系统的平均负载
4. ln 文件链接
为某一个文件在另外一个位置建立一个同步的链接,可以将其视为档案的别名,而链接又可分为两种 : 硬链接(hard link)与软链接(symbolic link)。硬链接会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。
软链接:
1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
2.软链接可以 跨文件系统 ,硬链接不可以
3.软链接可以对一个不存在的文件名进行链接
4.软链接可以对目录进行链接
硬链接:
1.硬链接,以文件副本的形式存在。但不占用实际空间。
2.不允许给目录创建硬链接
3.硬链接只有在同一个文件系统中才能创建
ln [参数][源文件或目录][目标文件或目录]
-b 删除,覆盖以前建立的链接 -i 交互模式,文件存在则提示用户是否覆盖
-d 允许超级用户制作目录的硬链接 -f 强制执行
-s 软链接(符号链接) -n 把符号链接视为一般目录 -v 显示详细的处理过程
ln -s test.log link1 给文件创建软链接
ln test.log ln1 给文件创建硬链接
ln test.log /opt/soft 创建test.log的硬连接/opt/soft/test.log
1)源文件被删除后,并没有影响硬链接文件;软链接文件在centos系统下不断的闪烁,提示源文件已经不存在
2)重建源文件后,软链接不在闪烁提示,说明已经链接成功,找到了链接文件系统;重建后,硬链接文件并没有受到源文件影响,硬链接文件的内容还是保留了删除前源文件的内容,说明硬链接已经失效
5. make 编译命令
make是一个解释makefile中指令的命令工具,make可自动完成编译工作,而不用gcc命令单独编译每个源文件,并且可以只对程序员在上次编译后修改过的部分进行编译,提高了开发效率。Makefile文件描述了整个工程的编译、连接等规则。
Linux应用软件的安装包通常有三种:
a. tar包,如software.tar.gz。它是使用UNIX系统的打包工具tar打包的。
1)“tar –xvf 解压后的tar包”进行解包;
2) 阅读附带的INSTALL文件、README文件;
3) 执行“./configure”命令为编译做好准备;
4) 执行“make”命令进行软件编译;
5) 执行“make install”完成安装;
6) 执行“make clean”删除安装时产生的临时文件。
b. rpm包,如software.rpm。它是Redhat Linux提供的一种包封装格式。
rpm参数 : -i 安装软件 -t 测试安装,不是真的安装 -p 显示安装进度
-U 升级安装 -v 检测套件是否正确安装 -f 忽略任何错误
安装:rpm –ivh software.rpm 卸载: rpm –e software //软件名
c. dpkg包,如software.deb。它是Debain Linux提供的一种包封装格式。
安装:dpkg –i software-1.2.3-1.deb 卸载: dpkg –e software
RedHat 系列
1) 常见的安装包格式 rpm包,安装rpm包的命令是“rpm -参数”
2)包管理工具 yum
3) 支持tar包
Debian系列
1) 常见的安装包格式 deb包,安装deb包的命令是“dpkg -参数”
2) 包管理工具 apt-get
3) 支持tar包
apt-get update 更新软件包,在修改/etc/apt/sources.list或者/etc/apt/preferences之后运行该命令 apt-get upgrade 更新已安装的软件包 apt-get dist-upgrade 升级系统 apt-get install packagename 安装软件包 apt-get remove packagename 卸载软件包(保留配置文件) apt-get –purge remove packagename 卸载软件包(删除配置文件) apt-get clean 删除包缓存中的所有deb //APT的底层包是dpkg, 而dpkg安装软件包时, 会将*.deb放在缓存中/var/cache/apt/archives/ apt-get autoclean 删除包缓存中的已经过期的deb
6. awk 命令