一天一个小命令
/
根目录
/bin
系统启动时需要的执行文件(二进制),/boot/vmlinuz为linux的内核文件,以及/boot/gurb
/dev
存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱 mount /dev/cdrom /mnt
/etc
:系统配置文件存放的目录
/lib
:/usr/lib:/usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助,比较重要的目录为/lib/modules
/mnt
--- 临时用于挂载文件系统的地方。一般情况下这个目录是空的
/opt
:给主机额外安装软件所摆放的目录
/proc
:此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的目录有/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/
/root
启动Linux使用的核心文件,如操作系统内核,引导程序等
sbin
--- 系统管理员命令,与用户相关
/srv
:服务启动之后需要访问的数据目录
/usr
:应用程序存放目录,/usr/bin存放应用程序,/usr/share存放共享数据,/usr/lib存放不能直接运行的,却是许多程序运行所必需的一些函数库文件。/usr/local:存放软件升级包。/usr/share/doc:系统说明文件存放目录。/usr/share/man: 程序说明文件存放目录
/var
:放置系统执行过程中经常变化的文件,如随时更改的日志文件/var/log,/var/log/message:所有的登录文件存放目录,/var/spool/mail:邮件存放的目录,/var/run:程序或服务启动后,其PID存放在该目录下。
/tmp
:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下
主分区:也叫引导分区,最多可能创建4个,当创建四个主分区时候,就无法再创建扩展分区了,当然也就没有逻辑分区了。主分区是独立的,对应磁盘上的第一个分区,“一般”就是C盘。在Windows系统把所有的主分区和逻辑分区都叫做“盘”或者“驱动器”,并且把所有的可存储介质都显示为操作系统的“盘”。因此,从“盘”的概念上无法区分主分区和逻辑分区。并且盘符可以在操作系统中修改,这就是要加上“一般”二字的原因。
扩展分区:除了主分区外,剩余的磁盘空间就是扩展分区了,扩展分区是一个概念,实际上是看不到的。当整个硬盘分为一个主分区的时候,就没有了扩展分区。
逻辑分区:在扩展分区上面,可以创建多个逻辑分区。逻辑分区相当于一块存储截止,和操作系统还有别的逻辑分区、主分区没有什么关系,是“独立的”。
活动分区:就是当前活动的、操作系统可以启动的分区。
fdisk -l
查看分区信息
Linux 命令大全 参考文档
ls --hlep 查看ls命令帮助
man ls 查看ls详细说明
用法: ls <option> <fileName|path>
参数:
-a 查看当前目录下所有文件,包括隐藏文件
-l 显示文件详细信息,等同于 ll
-m 以逗号分隔的方式显示文件
-h 以人类可读方式显示文件信息 e.g. 1K 234M 2G
示例:
ls -l
用法: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ...
选项:
-c 创建新文档
-t 列出档案目录
-x 从档案中提取指定的 (或所有) 文件
-u 更新现有档案
-v 在标准输出中生成详细输出
-f 指定档案文件名
-e 为捆绑到可执行 jar 文件的独立应用程序指定应用程序入口点
-C 更改为指定的目录并包含以下文件`
示例 1: 将两个类文件归档到一个名为 classes.jar 的档案中:
jar cvf classes.jar Foo.class Bar.class
示例 2: 使用现有的清单文件 'mymanifest' 并将 foo/ 目录中的所有文件归档到 'classes.jar' 中:
jar cvfm classes.jar mymanifest -C foo/ .
示例 3: 替换jar/war包内容
jar tvf vedio.war | grep MediaController 查找文件所在目录
jar xvf vedio.war /WEB-INF/classes/com/cygps/controller/MediaController 解压指定文件
cp MediaController.class WEB-INF/classes/com/ivmscy/controller/ 复制文件到解压后的目录
jar uvf vedio.war WEB-INF/classes/com/ivmscy/controller/ 添加文件到war包
用法: grep [-acinv] [--color=auto] '搜寻字符串' filename
参数:
-a :将 binary 文件以 text 文件的方式搜寻数据
-c :计算找到 '搜寻字符串' 的次数
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-r :遍历文件夹
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!
示例 1: 查找/etc/passwd 下包含 root 字符串的文件
grep -rn 'root' /etc/
示例2: 递归查找文件
grep 'energywise' *
在当前目录搜索带'energywise'行的文件
grep -r 'energywise' *
在当前目录及其子目录下搜索'energywise'行的文件
grep -l -r 'energywise' *
在当前目录及其子目录下搜索'energywise'行的文件,但是不显示匹配的行,只显示匹配的文件
示例3: 正则查找字符串
查找 test 或 tast
[root@www ~]# grep -n 't[ae]st' regular_express.txt
8:I can't finish the test.
9:Oh! The soup taste good.
字符类的反向选择 [^] :如果想要搜索到有 oo 的行,但不想要 oo 前面有 g
[root@www ~]# grep -n '[^g]oo' regular_express.txt
2:apple is my favorite food.
3:Football game is not use feet only.
18:google is the best tools for search keyword.
不以小写字母开头
[root@www ~]# grep -n '[^a-z]oo' regular_express.txt
3:Football game is not use feet only.
[0-9] 匹配数字
^the 匹配行首
[a-zA-Z] 字母
g..d 开头为 g,结尾为 d的字符串
用法: ps [option]
参数:
-A 列出所有的进程
-aux 显示所有包含其他使用者的进程
输出参数说明:
USER: 行程拥有者
PID: pid
%CPU: 占用的 CPU 使用率
%MEM: 占用的记忆体使用率
VSZ: 占用的虚拟记忆体大小
RSS: 占用的记忆体大小
TTY: 终端的次要装置号码 (minor device number of tty)
STAT: 该行程的状态:
D: 不可中断的静止 (通悸□□缜b进行 I/O 动作)
R: 正在执行中
S: 静止状态
T: 暂停执行
Z: 不存在但暂时无法消除
W: 没有足够的记忆体分页可分配
<: 高优先序的行程
N: 低优先序的行程
L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)
START: 行程开始时间
TIME: 执行的时间
COMMAND:所执行的指令
示例1:
ps -u root //显示root进程用户信息
示例2:
ps -ef //显示所有命令,连带命令行
ps -ef|grep tomcat 显示tomcat进程信息
用法: tail [ -f ] [ -c Number | -n Number | -m Number | -b Number | -k Number ] [ File ]
参数:
-f 该参数用于监视File文件增长。
-c Number 从 Number 字节位置读取指定文件
-n Number 从 Number 行位置读取指定文件。
-m Number 从 Number 多字节字符位置读取指定文件,比方你的文件假设包括中文字,假设指定-c参数,
可能导致截断,但使用-m则会避免该问题。
-b Number 从 Number 表示的512字节块位置读取指定文件。
-k Number 从 Number 表示的1KB块位置读取指定文件。
不指定Number,默认显示10行
示例:
tail -f fileName 监视filename文件的尾部内容(默认10行,相当于增加参数 -n 10),
刷新显示在屏幕上。退出,按下CTRL+C
tail -n 20 filename 显示filename最后20行。
tail -r -n 10 fileName 逆序显示filename最后10行
简介:
locate命令要比find -name快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/mlocate/mlocate.db 。这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,因此,我们在用whereis和locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。整个locate工作其实是由四部分组成的:
/usr/bin/updatedb 主要用来更新数据库,通过crontab自动完成的
/usr/bin/locate 查询文件位置
/etc/updatedb.conf updatedb的配置文件
/var/lib/mlocate/mlocate.db 存放文件信息的文件
用法:
locate [OPTION]... [PATTERN]...
参数:
-b, --basename match only the base name of path names
-c, --count 只输出找到的数量
-d, --database DBPATH 使用DBPATH指定的数据库,而不是默认数据库
+/var/lib/mlocate/mlocate.db
-i, --ignore-case 忽略大小写
-q, --quiet 安静模式,不会显示任何错误讯息
-r, --regexp REGEXP 使用基本正则表达式
--regex 使用扩展正则表达式
示例:
搜索etc目录下所有以my开头的文件
locate /etc/my
用法: chmod [-cfvR] [--help] [--version] [mode] [file]
参数:
mode参数 : 权限设定字串,格式如下 :
[ugoa][[+-=][rwxX]
u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行
其他参数:
-c : 若该文件权限确实已经更改,才显示其更改动作
-f : 若该文件权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)
示例:
1.chmod a-rwx 1.zip 取消1.zip的所有权限
2.此外chmod也可以用数字来表示权限如 :
chmod 777 file 语法为: chmod abc file
其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。
r=4,w=2,x=1
若要rwx属性则4+2+1=7;
若要rw-属性则4+2=6;
若要r-x属性则4+1=5。
chmod a=rwx file 和 chmod 777 file 一个效果
用法: cat [-AbeEnstTuv] [--help] [--version] fileName
参数:
-n 或 --number:由 1 开始对所有输出的行数编号。
-b 或 --number-nonblank:和 -n 相似,只不过对于空白行不编号。
-s 或 --squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行。
-v 或 --show-nonprinting:使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。
-E 或 --show-ends : 在每行结束处显示 $。
-T 或 --show-tabs: 将 TAB 字符显示为 ^I。
-A, --show-all:等价于 -vET。
-e:等价于"-vE"选项;
-t:等价于"-vT"选项;
用法: unzip [-cflptuvz][-agCjLMnoqsVX][-P <密码>][.zip文件][文件][-d <目录>][-x <文件>] 或 unzip [-Z]
参数:
-c 将解压缩的结果显示到屏幕上,并对字符做适当的转换。
-f 更新现有的文件。
-l 显示压缩文件内所包含的文件。
-p 与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换。
-t 检查压缩文件是否正确。
-u 与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中。
-v 执行是时显示详细的信息。
-z 仅显示压缩文件的备注文字。
-a 对文本文件进行必要的字符转换。
-b 不要对文本文件进行字符转换。
-C 压缩文件中的文件名称区分大小写。
-j 不处理压缩文件中原有的目录路径。
-L 将压缩文件中的全部文件名改为小写。
-M 将输出结果送到more程序处理。
-n 解压缩时不要覆盖原有的文件。
-o 不必先询问用户,unzip执行后覆盖原有文件。
-P<密码> 使用zip的密码选项。
-q 执行时不显示任何信息。
-s 将文件名中的空白字符转换为底线字符。
-V 保留VMS的文件版本信息。
-X 解压缩时同时回存文件原来的UID/GID。
[.zip文件] 指定.zip压缩文件。
[文件] 指定要处理.zip压缩文件中的哪些文件。
-d<目录> 指定文件解压缩后所要存储的目录。
-x<文件> 指定不要处理.zip压缩文件中的哪些文件。
-Z unzip -Z等于执行zipinfo指令。
示例:
unzip -o 1.zip -d demo/ 将1.zip解压到demo里面
用法: zip [ 参数 ] [ 打包后的文件名 ] [ 打包的目录路径 ]
参数:
-a 将文件转成ASCII模式
-F 尝试修复损坏的压缩文件
-m 将文件压缩之后,删除源文件
-n 特定字符串 不压缩具有特定字尾字符串的文件
-o 将压缩文件内的所有文件的最新变动时间设为压缩时候的时间
-q 安静模式,在压缩的时候不显示指令的执行过程
-r 将指定的目录下的所有子目录以及文件一起处理
-S 包含系统文件和隐含文件(S是大写)
-t 日期 把压缩文件的最后修改日期设为指定的日期,日期格式为mmddyyyy
示例:
zip -r ./demo-zip.zip ./demo-zip
示例:
用法: sz 文件名
示例:
用法: awk [options] 'pattern{action}' file
参数:
-F fs or --field-separator fs
指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F:。
-v var=value or --asign var=value
赋值一个用户定义变量。
-f scripfile or --file scriptfile
从脚本文件中读取awk命令。
内建变量:
变量 | 描述 |
---|---|
FS | 字段分隔符(默认是任何空格) |
$n | 当前记录的第n个字段,字段间由FS分隔 |
$0 | 完整的输入记录 |
ARGC | 命令行参数的数目 |
ARGIND | 命令行中当前文件的位置(从0开始算) |
FILENAME | 当前文件名 |
OFMT | 数字的输出格式(默认值是%.6g) |
示例 1:
示例 2:
示例 3:
示例 4(正则查询):
awk '$1 ~ /2/ {print $0}' awktest.txt
查找第一列为2的行, $1
:第一列 ~:
正则开始 //
:模式
awk '/2/ {print $0}' awktest.txt
查找包含2的行
awk '$1 !~ /2/ {print $0}' awktest.txt
取反
其他:
ls -l *.txt | awk '{sum+=$6} END {print sum}'
计算文件大小
awk 'length>3' awktest.txt
从文件中找出长度大于3的行
seq 9 | sed 'H;g' | awk -v RS='' '{for(i=1;i<=NF;i++)printf("%dx%d=%d%s", i, NR, i*NR, i==NR?"\n":"\t")}'
打印九九乘法表
用法: lsof [options] file
常用示例:
lsof ./chat-example/
查看谁正在使用这个文件
lsof -i :3306
查看哪个程序正在使用端口
lsof -i udp:55
列出谁在使用某个特定的udp端口
lsof +D /root/software/
递归查看某个目录的文件信息
lsof -N
列出所有网络文件系统
用法: ifconfig [options]
options:
add<地址>:设置网络设备IPv6的ip地址;
del<地址>:删除网络设备IPv6的IP地址;
down:关闭指定的网络设备;
io_addr<I/O地址>:设置网络设备的I/O地址;
irq<IRQ地址>:设置网络设备的IRQ;
media<网络媒介类型>:设置网络设备的媒介类型;
mem_start<内存地址>:设置网络设备在主内存所占用的起始地址;
metric<数目>:指定在计算数据包的转送次数时,所要加上的数目;
mtu<字节>:设置网络设备的MTU;
netmask<子网掩码>:设置网络设备的子网掩码;
tunnel<地址>:建立IPv4与IPv6之间的隧道通信地址;
up:启动指定的网络设备;
-broadcast<地址>:将要送往指定地址的数据包当成广播数据包来处理;
-pointopoint<地址>:与指定地址的网络设备建立直接连线,此模式具有保密功能;
-promisc:关闭或启动指定网络设备的promiscuous模式;
示例:
[root@iz2zeb1zq3z ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:16:3E:00:1E:51
inet addr:10.160.7.81 Bcast:10.160.15.255 Mask:255.255.240.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:61430830 errors:0 dropped:0 overruns:0 frame:0
TX packets:88534 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3607197869 (3.3 GiB) TX bytes:6115042 (5.8 MiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:56103 errors:0 dropped:0 overruns:0 frame:0
TX packets:56103 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:5079451 (4.8 MiB) TX bytes:5079451 (4.8 MiB)
eth0
表示第一块网卡,其中HWaddr表示网卡的物理地址,可以看到目前这个网卡的物理地址 (MAC地址) 是00:16:3E:00:1E:51
。
inet addr
用来表示网卡的IP地址,此网卡的IP地址是10.160.7.81
,广播地址Bcast:10.160.15.255
,掩码地址Mask:255.255.240.0
lo
是表示主机的回环地址,这个一般是用来测试一个网络程序,但又不想让局域网或外网的用户能够查看,只能在此台主机上运行和查看所用的网络接口。比如把 httpd服务器的指定到回环地址,在浏览器输入127.0.0.1就能看到你所架WEB网站了。但只是您能看得到,局域网的其它主机或用户无从知道。
第一行:连接类型:Ethernet(以太网)HWaddr(硬件mac地址)。
第二行:网卡的IP地址、子网、掩码。
第三行:UP(代表网卡开启状态)RUNNING(代表网卡的网线被接上)MULTICAST(支持组播)MTU:1500(最大传输单元):1500字节。
第四、五行:接收、发送数据包情况统计。
第七行:接收、发送数据字节数统计信息。
启动关闭指定网卡:
ifconfig eth0 up
ifconfig eth0 down
ifconfig eth0 up为启动网卡eth0,ifconfig eth0 down为关闭网卡eth0。ssh登陆linux服务器操作要小心,关闭了就不能开启了,除非你有多网卡。
为网卡配置和删除IPv6地址:
ifconfig eth0 add 33ffe:3240:800:1005::2/64 #为网卡eth0配置IPv6地址
ifconfig eth0 del 33ffe:3240:800:1005::2/64 #为网卡eth0删除IPv6地址
用ifconfig修改MAC地址:
ifconfig eth0 hw ether 00:AA:BB:CC:dd:EE
配置IP地址:
[root@localhost ~]# ifconfig eth0 192.168.2.10
[root@localhost ~]# ifconfig eth0 192.168.2.10 netmask 255.255.255.0
[root@localhost ~]# ifconfig eth0 192.168.2.10 netmask 255.255.255.0 broadcast 192.168.2.255
启用和关闭arp协议:
ifconfig eth0 arp #开启网卡eth0 的arp协议
ifconfig eth0 -arp #关闭网卡eth0 的arp协议
设置最大传输单元:
ifconfig eth0 mtu 1500 #设置能通过的最大数据包大小为 1500 bytes
用法: free [-bkmotV][-s <间隔秒数>]
options:
-b 以Byte为单位显示内存使用情况。
-k 以KB为单位显示内存使用情况。
-m 以MB为单位显示内存使用情况
-s<间隔秒数> 持续观察内存使用状况。
-t 显示内存总和列。
示例 :
[root@iZ2ze1bs0o0pc ~]# free -m
total used free shared buffers cached
Mem: 32168 30119 2048 0 4438 11097
-/+ buffers/cache: 14583 17584
Swap: 31996 1899 30097
返回参数说明
- 第二行 Mem
total
:总计物理内存的大小。
used
:已使用多大。
free
:可用有多少。
Shared
:多个进程共享的内存总额。
Buffers/cached
:磁盘缓存的大小。
- 第三行(-/+ buffers/cached):
used
:已使用多大。
free
:可用有多少。
- 第四行
是交换分区SWAP的,也就是我们通常所说的虚拟内存。
区别:第二行(mem)的used/free与第三行(-/+ buffers/cache) used/free的区别。 这两个的区别在于使用的角度来看,第一行是从OS的角度来看
,因为对于OS,buffers/cached 都是属于被使用,其中包括,内核(OS)使用+Application(X, oracle,etc)使用的+buffers+cached.
第三行所指的是从应用程序角度来看
,对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。
所以从应用程序的角度来说,可用内存=系统free memory+buffers+cached。
用法: wget [options] 参数
options:
-b:进行后台的方式运行wget;
-nc:文件存在时,下载文件不覆盖原有文件;
-i<文件>:从指定文件获取要下载的URL地址;
示例 :
下载单个文件
wget http://www.linuxde.net/testfile.zip
下载并以不同的文件名保存
wget -O wordpress.zip http://www.linuxde.net/download.aspx?id=1080
使用wget断点续传
wget -c http://www.linuxde.net/testfile.zip
用法: scp [可选参数] file_source file_target
options:
-r: 递归复制整个目录
-P port:注意是大写的P, port是指定数据传输用到的端口号
-v:详细方式显示输出
-4: 强制scp命令只使用IPv4寻址
示例:
-
从本地复制到远程 scp -r local_folder remote_username@remote_ip:remote_folder 或者 scp -r local_folder remote_ip:remote_folder
-
从远程复制到本地
scp remote_username@remote_ip:/home/root/others/music /home/space/music/1.mp3 scp -r remote_ip:/home/root/others/ /home/space/music/
以后台方式运行命令
&
ctrl + b
查看所有任务
jobs
把后台任务放在前台执行
fg %ID