Linux常用指令总结

常用的Linux指令总结

1.cd命令:用于切换当前目录
cd /root/Docements #切换到目录/root/Docements
cd ./path #切换到当前目录下的path目录中,".“表示当前目录
cd …/path #切换到上层目录中的path目录中,”…"表示上一层目录
cd ~ #进入用户的home目录(切换到主目录)
cd / #切换到根目录
cd /temp #切换到目录/temp
cd dir #切换到当前目录下的dir目录
cd … #切换到到上一级目录
cd …/… #切换到上上级目录
cd - #进入上一个进入的目录

2.ls命令:查看文件与目录
ls -a #列出全部的文件,连同隐藏文件(开头为.的文件)一起列出来
ls -d #仅列出目录本身,而不是列出目录的文件数据
ls -h #将文件容量以较易读的方式(GB,kB等)列出来
ls -R #连同子目录的内容一起列出(递归列出),等于该目录下的所有文件都会显示出来
ls -l #以长数据串的形式列出当前目录下的数据文件和目录(包含文件的属性与权限数据等)
ls -lR #以长数据串的形式列出当前目录下的所有文件
ll -l .xml #列出以xml为后缀的文件
ll a
#列出当前目录下所有以a开头的文件
ll -la #给出当前目录下所有文件的一个长列表,包括以句点开头的隐藏文件

3.grep命令:文本搜索,它能使用正则表达式搜索文本,并把匹配的行打印出来
-c 只输出匹配行的计数
-v 不显示不包含匹配文本的所以有行
-s 不显示错误信息
-E 使用扩展正则表达式
-i :忽略大小写(用于单字符)
-c :打印匹配的行数
-l :从多个文件中查找包含匹配项
-v :查找不包含匹配项的行
-n:打印包含匹配项的行和行标
更多的选项请查看:man grep

grep -i "ab" data.doc       #输出所有含有ab或Ab的字符串的行
grep -vn "48" data.doc      #输出所有不包含48的行
grep -n "48" data.doc       #显示所有匹配48的行和行号
grep -c data.doc   #输出文档中含有48字符的行数
grep "sort" *.doc       #见文件名的匹配
grep ‘test’ d*  		#显示所有以d开头的文件中包含 test的行。
grep ‘test’ aa bb cc    #显示在aa,bb,cc文件中匹配test的行。
grep ‘[a-z]\{5\}’ aa    #显示所有包含每个字符串至少有5个连续小写字符的字符串的行。

grep merchantid spEnterprise_batch.log --color | more -40   #在spEnterprise_batch.log文件中查找包含merchantid的行,并标颜色后分页显示

tail -10f spEnterprise_detail.log | grep --color "执行sql"  按关键字动态查看日志100行

查看端口占用情况:netstat -apn | grep 8080

(1).
	[root@www ~]# grep [-acinv] [--color=auto] '搜寻字符串' filename
	选项与参数:
	-a :将 binary 文件以 text 文件的方式搜寻数据
	-c :计算找到 '搜寻字符串' 的次数
	-i :忽略大小写的不同,所以大小写视为相同
	-n :顺便输出行号
	-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!
	--color=auto :可以将找到的关键词部分加上颜色的显示!
	
	示例:grep -ain --color merchantid spEnterprise_batch.log    #查找spEnterprise_batch.log中包含"merchantid"的行并加亮显示
		 grep -ainc --color merchantid spEnterprise_batch.log    #统计:文件spEnterprise_batch.log中包含"merchantid"的个数
		 
		 
(2).将/etc/passwd,有出现 root 的行取出来
	# grep root /etc/passwd
	root:x:0:0:root:/root:/bin/bash
	operator:x:11:0:operator:/root:/sbin/nologin
	或
	# cat /etc/passwd | grep root 
	root:x:0:0:root:/root:/bin/bash
	operator:x:11:0:operator:/root:/sbin/nologin
	
(3).将/etc/passwd,有出现 root 的行取出来,同时显示这些行在/etc/passwd的行号
	# grep -n root /etc/passwd
	1:root:x:0:0:root:/root:/bin/bash
	30:operator:x:11:0:operator:/root:/sbin/nologin

(4).将/etc/passwd,将没有出现 root 的行取出来
	# grep -v root /etc/passwd
	root:x:0:0:root:/root:/bin/bash
	operator:x:11:0:operator:/root:/sbin/nologin

(5).将/etc/passwd,将没有出现 root 和nologin的行取出来
	# grep -v root /etc/passwd | grep -v nologin
	root:x:0:0:root:/root:/bin/bash
	operator:x:11:0:operator:/root:/sbin/nologin
	
(6).用 dmesg 列出核心信息,再以 grep 找出内含 eth 那行,要将捉到的关键字显色,且加上行号来表示:
	[root@www ~]# dmesg | grep -n --color=auto 'eth'
	247:eth0: RealTek RTL8139 at 0xee846000, 00:90:cc:a6:34:84, IRQ 10
	248:eth0: Identified 8139 chip type 'RTL-8139C'
	294:eth0: link up, 100Mbps, full-duplex, lpa 0xC5E1
	305:eth0: no IPv6 routers present
	# 你会发现除了 eth 会有特殊颜色来表示之外,最前面还有行号!
	
(7).用 dmesg 列出核心信息,再以 grep 找出内含 eth 那行,在关键字所在行的前两行与后三行也一起捉出来显示
	[root@www ~]# dmesg | grep -n -A3 -B2 --color=auto 'eth'
	245-PCI: setting IRQ 10 as level-triggered
	246-ACPI: PCI Interrupt 0000:00:0e.0[A] -> Link [LNKB] ...
	247:eth0: RealTek RTL8139 at 0xee846000, 00:90:cc:a6:34:84, IRQ 10
	248:eth0: Identified 8139 chip type 'RTL-8139C'
	249-input: PC Speaker as /class/input/input2
	250-ACPI: PCI Interrupt 0000:00:01.4[B] -> Link [LNKB] ...
	251-hdb: ATAPI 48X DVD-ROM DVD-R-RAM CD-R/RW drive, 2048kB Cache, UDMA(66)
	# 如上所示,你会发现关键字 247 所在的前两行及 248 后三行也都被显示出来!
	# 这样可以让你将关键字前后数据捉出来进行分析啦!

(8).根据文件内容递归查找目录
	grep ‘energywise’ *           #在当前目录搜索带'energywise'行的文件
	grep -r ‘energywise’ *        #在当前目录及其子目录下搜索'energywise'行的文件
	grep -l -r ‘energywise’ *     #在当前目录及其子目录下搜索'energywise'行的文件,但是不显示匹配的行,只显示匹配的文件
	grep -Rl xxxxxx *             #查找当前目录下及子目录下包含xxxxxx的文件
	grep –R XXXXX *       		  #查找当前目录下及子目录下包含xxxxxx的内容
	grep -v ^# /etc/apache/httpd.conf #在主apache配置文件中查找所有非注释行

4.删除命令
rm 文件名 #删除文件
rm * #删除当前目录下的所有文件(不包括文件夹)
rm -rf 文件夹 #删除文件夹以及文件夹下的所有文件
rm -i a* #删除当前目录下所有以字母a开头的文件,并且在每次删除时,提示用户进行确认

5.复制指令
cp -a 文件夹1 文件夹2 #递归性的把当前目录下的文件夹1目录复制为新目录文件夹2(-a或-r:保持文件的属性,并复制所有的文件,包括以句点开头的隐藏文件)
cp --help #查看cp指令的所有操作含义

6.mv-移动和重命名文件
mv afile bfile #将afile重新命名为bfile
mv afile /tmp #把当前目录下的afile移动到/tmp/目录下

7.cat命令:显示文件内容
cat filename #一次显示整个文件内容
cat > filename #从键盘创建一个文件(只能创建新文件,不能编辑已有文件.)
cat afile bfile > cfile #将a文件和b文件合并成一个c文件(将几个文件合并为一个文件)
cat -n filename #由1开始对filename文件所有输出的行数进行编号
cat -b filename #由1开始对filename文件所有输出的行数进行编号(和上面的区别:不对空白行进行编号)
cat -s filename #当遇到有连续两行以上的空白行,就代换为一行的空白行
cat -n linuxfile1 > linuxfile2 #把linuxfile1的档案内容加上行号后输入linuxfile2这个档案里
cat -b linuxfile1 linuxfile2 >> linuxfile3 #把linuxfile1和linuxfile2的档案内容加上行号(空白行不加)之后将内容附加到linuxfile3里
cat /dev/null > /etc/test.txt #清空/etc目录下的test.txt档案的全部内容

cat>filename        #创建文件,并把标准输入输出到filename文件中,以ctrl+d作为输入结束(输入时是没有'>'的)
cat>filename<<EOF	#以EOF作为输入结束,和ctrl+d的作用一样(输入完之后,输入EOF然后回车结束)

cat spEnterprise_batch.log* | grep "开户后更新商户记录异常" | wc -l   #统计spEnterprise_batch.log文件中包含"开户后更新商户记录异常"行数

8.mkdir命令:创建目录
mkdir hostName #在当前目录下创建hostName文件夹
mkdir -p this/that/other #在当前目录下创建指定的嵌套子目录

9.命令more:查看文件内容
cat命令是整个文件的内容从上到下显示在屏幕上!!!
more则以一页一页的显示,方便使用者逐页阅读,最基本的指令:按空格键(space)就往下一页显示,按b键就会往回(back)一页显示,而且还有搜寻字串的功能
more命令从前向后读取文件,因此在启动时就加载整个文件。

more +n fileName   		 #从第n行开始显示(n代表具体的数字)
more -n fileName   		 #定义屏幕大小为n行(即:每页显示n行,如n=5,则每页显示5行数据)
more +/pattern fileName  #在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示  
more -c fileName      	 #从顶部清屏,然后显示
more -d filleName        #提示“Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,禁用响铃功能
more -l fileName         #忽略Ctrl+l(换页)字符
more -p fileName         #通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似
more -s fileName         #把连续的多个空行显示为一行
more -u fileName         #把文件内容中的下画线去掉
more +/merchantId fileName  #从文件中查找第一个出现"merchantId"字符串的行,并从该处前两行开始显示输出
常用操作命令:
	Enter 向下n行,需要定义。默认为1行
	Ctrl+F 向下滚动一屏
	空格键 向下滚动一屏
	Ctrl+B 返回上一屏
	= 输出当前行的行号
	V 调用vi编辑器
	:wq 保存并退出编辑
	q 退出more
	h 获取帮助
more也可以配合linux的管道符“|”使用  
1.例如: ll | more  #分屏显示列表

2.例如: 当一个目录下的文件内容太多,可以用more来分页显示
		#用more来分页显示包含"公众号"字样的信息
		cat spEnterprise_batch.log.2018121312 | grep "公众号" --color | more -50    #“|”表示管道,作用是可以将前面命令的输出当做后面命令的输入

10.命令less:查找查看文件
相比于more命令,less命令更加灵活强大一些.
less命令 可以更加随意地浏览文件,而且 less 在查看之前不会加载整个文件。
less命令的几个常用的参数:
-b <缓冲区大小> 设置缓冲区的大小
-e 当文件显示结束后,自动离开
-f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-g 只标志最后搜索的关键词
-i 忽略搜索时的大小写
-m 显示类似more命令的百分比
-N 显示每行的行号
-o <文件名> 将less 输出的内容在指定文件中保存起来
-Q 不使用警告音
-s 显示连续空行为一行
-S 行过长时间将超出部分舍弃
-x <数字> 将"tab"键显示为规定的数字空格
/字符串:向下搜索"字符串"的功能
?字符串:向上搜索"字符串"的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
b 向后翻一页
d 向后翻半页
h 显示帮助界面
Q 退出less 命令
u 向前滚动半页
y 向前滚动一行
空格键 滚动一行
回车键 滚动一页
[pagedown]: 向下翻动一页
[pageup]: 向上翻动一页

示例:
less console.log1 console.log2   #一次查看多个文件(输入 :n后,切换到console.log1;   输入 :p 后,切换到console.log2)

Linux less命令常用操作命令总结如下:
1)分屏导航
	ctrl + F #向前移动一屏 
	ctrl + B #向后移动一屏 
	ctrl + D #向前移动半屏 
	ctrl + U #向后移动半屏
2)单行导航
	j #向前移动一行 
	k #向后移动一行
3)其它导航
	G #移动到最后一行 
	g #移动到第一行
4)其它命令
	v #使用配置的编辑器编辑当前文件 
	h #显示 less 的帮助文档 
	&pattern #仅显示匹配模式的行,而不是整个文件
	q / ZZ #退出 less 命令


总结:more, less 都具备查找功能,按/ 然后输入要找的字串,再按 Enter 即可,按 n(next) 会继续找,大写的 N 则是往回(上)找,按 q(quit)或者ZZ离开

11.find命令:查找文件
find . -name *.log #在当前目录下查找所有以.log结尾的文件
find .|grep console #在当前目录及其子目录中查找文件名包含console的文件
locate console #在系统的任何地方查找文件名包含console的文件
find -name /“名字” #查找不知道目录的文件

12.vi命令:编辑文件
按下i进行编辑
保存结束编辑 ESC :wq 回车
不保存结束编辑 ESC :q! 回车 <===> 退出的另一种方式:按住“shift”键,输入两个z即可退出

vi filename :打开或新建文件,并将光标置于第一行首 
vi +n filename :打开文件,并将光标置于第n行首 
vi + filename :打开文件,并将光标置于最后一行首 
vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处 
vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename 
vi filename….filename :打开多个文件,依次进行编辑


vi操作
	1.跳到文本的最后一行:按“G”,即“shift+g”
	2.跳到最后一行的最后一个字符 : 先重复1的操作即按“G”,之后按“$”键,即“shift+4”。
	3.跳到第一行的第一个字符:先按两次“g”,
	4.跳转到当前行的第一个字符:在当前行按“0”。
	5.vi加密。进入vi,输入":" ?+ "X" 之后就提示你输入两次密码。
	6.文件重新载入?:e!
	7.单行复制 ?将光标移到复制行 按 'yy'进行复制
	8.多行复制 ?将光标移到复制首行 按 'nyy'进行复制 n=1.2.3.4。。。。。
	9.粘贴 将光标移到粘贴行 按 'p'进行粘贴
	10.查找?/pattern?Enter?
	11.将vim挂起(暂停):ctrl+z,暂停后可进行其他shell操作,完了之后可通过 fg?命令切换回vim界面继续编辑
	
	(1)Vi 编辑器 如何复制整行n内容,这样才能粘贴到文本
	1.进入你的文件,(处于命令模式,而不是编辑模式)
	2.将你的光标移到你的第三行的开头(用方向键)
	3.按下v,(你发现切换到可视模式了),按方向键,知道选中你想要的内容
	4.按y,再将光标移到第十四行末尾。
	5.按p。完成
	此方法可以用于多行的粘贴->复制~!
	(2)若想剪切->复制的话就更简单了(只能用于单行)
	1.进入你的文件,(处于命令模式,而不是编辑模式)
	2.将你的光标移到你的第三行的开头(用方向键)
	3.按两下d(发现第三行内容不见了)
	4.再将光标移到第十四行末尾,按p。

13.chmod授权命令
chmod u+x *.sh #授权
chmod -R 777 offline-serv-yjb

14.命令ps:查看进程(ps命令显示运行程序选项的一些信息)
ps命令用于报告当前系统的进程状态,可搭配kill指令随时中断删除不必要的进程
使用ps可以:a.确定有哪些进程正在运行
b.进程的运行状态
c.进程是否结束
d.哪些进程占用过多的资源等
命令参数:
a 显示所有进程
-a 显示同一终端下的所有程序
-A 显示所有进程
c 显示进程的真实名称
-N 反向选择
-e 等于“-A”
e 显示环境变量
f 显示程序间的关系
-H 显示树状结构
r 显示当前终端的进程
T 显示当前终端的所有程序
u 指定用户的所有进程
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的行程
-C<命令> 列出指定命令的状况
–lines<行数> 每页显示的行数
–width<字符数> 每页显示的字符数
–help 显示帮助信息
–version 显示版本显示

ps a   #显示现行终端机下的所有程序,包括其他用户的程序
ps -A  #显示所有程序进程
ps c   #列出程序时,显示每个程序真正的指令名称
ps e   #列出程序时,显示每个程序所使用的环境变量
ps -e  #此参数的效果和指定"A"参数相同
ps f   #显示树状结构
ps -H  #显示树状结构,表示程序间的相互关系
ps -N  #显示所有的程序,除了执行ps指令终端机下的程序之外
ps u   #以用户为主的格式显示程序的运行状况
ps x   #显示所有程序,不以终端机来区分


常用的是: 
ps aux
ps -ef #以长格式显示所有进程 (然后通过管道命令grep过滤查找特定的进程,然后再对特定的进程进行操作.)

示例:
	(1) ps -A     #显示所有进程信息
	(2) ps -u     #显示指定用户信息
	(3) ps -ef    #显示所有进程信息,连同命令行
	(4) ps -ef|grep ssh   #ps与grep组合用法,查找特定进程
	(5) ps aux            #列出目前所有的正在内存当中的程序
		[root@localhost test6]# ps aux
			USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
			root         1  0.0  0.0  10368   676 ?        Ss   Nov02   0:00 init [3]                  
			root         2  0.0  0.0      0     0 ?        S<   Nov02   0:01 [migration/0]
			root         3  0.0  0.0      0     0 ?        SN   Nov02   0:00 [ksoftirqd/0]
			root         4  0.0  0.0      0     0 ?        S<   Nov02   0:01 [migration/1]
			root         5  0.0  0.0      0     0 ?        SN   Nov02   0:00 [ksoftirqd/1]
			root         6  0.0  0.0      0     0 ?        S<   Nov02  29:57 [events/0]
			root         7  0.0  0.0      0     0 ?        S<   Nov02   0:00 [events/1]
			
		说明:

		USER:该 process 属于那个使用者账号的
		PID :该 process 的号码
		%CPU:该 process 使用掉的 CPU 资源百分比
		%MEM:该 process 所占用的物理内存百分比
		VSZ :该 process 使用掉的虚拟内存量 (Kbytes)
		RSS :该 process 占用的固定的内存量 (Kbytes)
		TTY :该 process 是在那个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
		STAT:该程序目前的状态,主要的状态有:
			R :该程序目前正在运作,或者是可被运作
			S :该程序目前正在睡眠当中 (可说是 idle 状态),但可被某些讯号 (signal) 唤醒。
			T :该程序目前正在侦测或者是停止了
			Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态
		START:该 process 被触发启动的时间
		TIME :该 process 实际使用 CPU 运作的时间
		COMMAND:该程序的实际指令
		
	(6) ps aux | egrep '(cron|syslog)'   #列出与cron与syslog这两个服务有关的PID号
		
		[root@localhost test6]# ps aux | egrep '(cron|syslog)'
		root      2682  0.0  0.0  83384  2000 ?        Sl   Nov02   0:00 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5
		root      2735  0.0  0.0  74812  1140 ?        Ss   Nov02   0:00 crond
		root     17475  0.0  0.0  61180   832 pts/0    S+   16:27   0:00 egrep (cron|syslog)
		[root@localhost test6]#	
		
		
	(7) ps -aux |more -10   #分页(每页10条)查看目前所有的正在内存当中的程序
		ps -aux > ps001.txt #把所有进程显示出来,并输出到ps001.txt文件
		ps -o pid,ppid,pgrp,session,tpgid,comm    #输出指定的字段

===========================ps aux、ps -aux、ps -ef之间的区别=======================
Linux中的ps命令是Process Status的缩写。
ps命令用来列出系统中当前运行的那些进程。
ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。

要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而 ps 命令就是最基本同时也是非常强大的进程查看命令。
使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。

ps指令为我们提供了进程的一次性的查看,它所提供的查看结果并不动态连续的;如果想对进程时间监控,应该用top指令。 
kill 命令用于杀死进程。

$man ps 之后得到:
ps displays information about a selection of the active processes. If you want a repetitive update of the selection and the displayed information, use top(1) instead. 
Note that "ps -aux" is distinct from "ps aux". The POSIX and UNIX standards require that "ps -aux" print all processes owned by a user named "x", 
as well as printing all processes that would be selected by the -a option. If the user named "x" does not exist, 
this ps may interpret the command as "ps aux" instead and print a warning. 
This behavior is intended to aid in transitioning old scripts and habits. It is fragile, subject to change, and thus should not be relied upon. 
意思是: 
	请注意"ps -aux"不同于"ps aux"。POSIX和UNIX的标准要求"ps -aux"打印用户名为"x"的用户的所有进程,以及打印所有将由-a选项选择的过程。如果用户名为"x"不存在,ps的将会解释为"ps aux",而且会打印一个警告。这种行为是为了帮助转换旧脚本和习惯。它是脆弱的,即将更改,因此不应依赖。 
	如果你运行ps -aux >/dev/null,那么你就会得到下面这行警告信息 
	Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html 
	如果你运行ps aux >/dev/null,则不会报这个错!
综上: 使用时两者之间直接选择ps aux

ps aux 和ps -ef 两者的输出结果差别不大,但展示风格不同。
aux是BSD风格(显示不完全),-ef是System V风格(显示出来就是带全路径的进程名)。
这是次要的区别,一个影响使用的区别是aux会截断command列,而-ef不会。
当结合grep时这种区别会影响到结果。

例如: 用/bmrt/blaph/blaph/bmgctl来启动进程,由于ps aux是用BSD格式来显示结果,所以可能只会显示到/bmrt/blaph/blap,后面的都被截掉了...
      这样,如果用ps aux | grep bmgctl 来过滤该进程,可能就会误伤,获取不到bmgctl进程。
	  而ps -ef是完全没问题的!!!
		
===========================ps aux、ps -aux、ps -ef之间的区别=======================

linux上进程有5种状态: 
	1. 运行(正在运行或在运行队列中等待) 
	2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号) 
	3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生) 
	4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放) 
	5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行) 
ps工具标识进程的5种状态码: 
	D 不可中断 uninterruptible sleep (usually IO) 
	R 运行 runnable (on run queue) 
	S 中断 sleeping 
	T 停止 traced or stopped 
	Z 僵死 a defunct (”zombie”) process

15.kill命令:杀掉进程
kill -l #列出所有信号名称
kill -l KILL #得到指定信号的数值(得到结果:9)
kill -l TERM #得到指定信号的数值(得到结果:15)

ps -ef|grep offline-serv|grep -v grep	#先用ps查找进程,然后用kill杀掉
kill pid
kill -9 pid    #立即彻底强制杀掉进程
kill -15 pid   #以正常的程序方式终止一项工作

16.命令stop、start:重启tomcat
./catalina.sh stop #停止Tomcat服务器
./catalina.sh start #启动Tomcat服务器

17.命令top:查看cpu、内存

18.命令pwd:查看当前路径

19.命令tar:打包、解包rar
linux中tar命令用法
把常用的tar解压命令总结下,当作备忘:
tar
-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件
这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。

下面的参数是根据需要在压缩或解压档案时可选的:
	-z:有gzip属性的
	-j:有bz2属性的
	-Z:有compress属性的
	-v:显示所有过程
	-O:将文件解开到标准输出

下面的参数-f是必须的:
	-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。

	# tar -cf all.tar *.jpg 
	这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。

	# tar -rf all.tar *.gif 
	这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。

	# tar -uf all.tar logo.gif 
	这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。

	# tar -tf all.tar 
	这条命令是列出all.tar包中所有文件,-t是列出文件的意思

	# tar -xf all.tar 
	这条命令是解出all.tar包中所有文件,-x是解开的意思


压缩
	tar –cvf jpg.tar *.jpg  将目录里所有jpg文件打包成tar.jpg
	tar –czf jpg.tar.gz *.jpg   将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz
	tar –cjf jpg.tar.bz2 *.jpg 将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2
	tar –cZf jpg.tar.Z *.jpg   将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z
	rar a jpg.rar *.jpg rar格式的压缩,需要先下载rar for linux
	zip jpg.zip *.jpg   zip格式的压缩,需要先下载zip for linux 

解压
	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

总结
	*.tar 用 tar –xvf 解压
	*.gz 用 gzip -d或者gunzip 解压
	*.tar.gz和*.tgz 用 tar –xzf 解压
	*.bz2 用 bzip2 -d或者用bunzip2 解压
	*.tar.bz2用tar –xjf 解压
	*.Z 用 uncompress 解压
	*.tar.Z 用tar –xZf 解压
	*.rar 用 unrar e解压
	*.zip 用 unzip 解压

linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,
tar包文件的命令通常都是以.tar结尾的。
生成tar包后,就可以用其它的程序来进行压缩。

(1).命令格式:
	tar[必要参数][选择参数][文件] 
(2).命令功能:
	用来压缩和解压文件。
	tar本身不具有压缩功能。
	它是调用压缩功能实现对文件的压缩。
(3).命令参数:
	必要参数有如下:
		-A 新增压缩文件到已存在的压缩
		-B 设置区块大小
		-c 建立新的压缩文件
		-d 记录文件的差别
		-r 添加文件到已经压缩的文件
		-u 添加改变了和现有的文件到已经存在的压缩文件
		-x 从压缩的文件中提取文件
		-t 显示压缩文件的内容
		-z 支持gzip解压文件
		-j 支持bzip2解压文件
		-Z 支持compress解压文件
		-v 显示操作过程
		-l 文件系统边界设置
		-k 保留原有文件不覆盖
		-m 保留文件不被覆盖
		-W 确认压缩文件的正确性
	可选参数如下:
		-b 设置区块数目
		-C 切换到指定目录
		-f 指定压缩文件
		--help 显示帮助信息
		--version 显示版本信息
(4).常见解压/压缩命令
	tar
	解包:tar xvf FileName.tar
	打包:tar cvf FileName.tar DirName
	(注:tar是打包,不是压缩!)

.gz结尾的压缩文件
	解压1:gunzip FileName.gz
	解压2:gzip -d FileName.gz
	压缩:gzip FileName

.tar.gz和.tgz结尾的压缩文件
	解压:tar zxvf FileName.tar.gz
	压缩:tar zcvf FileName.tar.gz DirName

.bz2结尾的文件
	解压1:bzip2 -d FileName.bz2
	解压2:bunzip2 FileName.bz2
	压缩: bzip2 -z FileName

.tar.bz2结尾的文件
	解压:tar jxvf FileName.tar.bz2
	压缩:tar jcvf FileName.tar.bz2 DirName

.bz结尾的文件
	解压1:bzip2 -d FileName.bz
	解压2:bunzip2 FileName.bz
	压缩:未知
.tar.bz结尾的文件
	解压:tar jxvf FileName.tar.bz
	压缩:未知

.Z结尾的文件
	解压:uncompress FileName.Z
	压缩:compress FileName
.tar.Z结尾的文件
	解压:tar Zxvf FileName.tar.Z
	压缩:tar Zcvf FileName.tar.Z DirName
.zip结尾的文件
	解压:unzip FileName.zip
	压缩:zip FileName.zip DirName

.rar结尾的文件
	解压:rar x FileName.rar
	压缩:rar a FileName.rar DirName 
 

(5).使用实例
实例1:将文件全部打包成tar包
命令:
tar -cvf log.tar log2012.log
tar -zcvf log.tar.gz log2012.log
tar -jcvf log.tar.bz2 log2012.log

tar -cvf ab.tar a.jsp b.java    #将a.jsp和b.java打包成ab.rar

20.命令tail:查看文件档案的详细信息
tail -f filename #监视filename文件的尾部内容(默认10行,相当于增加参数 -n 10),刷新显示在屏幕上(会自己主动刷新)。退出,按下CTRL+C。
tail -n 10 filename #显示filename最后10行(不会自主刷新)。
tail -r -n 10 filename #逆序显示filename最后10行。

补充:
	跟tail功能相似的命令还有:
	cat 从第一行開始显示档案内容。
	tac 从最后一行開始显示档案内容。
	more 分页显示档案内容。
	less 与 more 相似,但支持向前翻页
	head 仅仅显示前面几行
	tail 仅仅显示后面几行
	n 带行号显示档案内容
	od 以二进制方式显示档案内容

21.命令head:显示文件文字区块
命令参数:
  -q 隐藏文件名
  -v 显示文件名
  -c<字节> 显示字节数
  -n<行数> 显示的行数
head -n 5 head.txt #显示前5行
head -c 5 head.txt #显示前5个字节

22.命令diff:比较文件内容
diff dir1 dir2 #比较目录1与目录2的文件列表是否相同,但不比较文件的实际内容,不同则列出
diff file1 file2 #比较文件1与文件2的内容是否相同,如果是文本格式的文件,则将不相同的内容显示,如果是二进制代码则只表示两个文件是不同的
comm file1 file2 #比较文件,显示两个文件不相同的内容

23.命令ln:建立连接(为某一个文件或目录在另外一个位置建立一个同步的链接,类似Windows下的超级链接。)
Linux ln命令是一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接。
当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,
我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。

语法:
ln [参数][源文件或目录][目标文件或目录]


命令功能 : 
Linux文件系统中,有所谓的链接(link),我们可以将其视为档案的别名,
而链接又可分为两种 : 
	硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个档案可以有多个名称,
	而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。
硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。
不论是硬链接或软链接都不会将原本的档案复制一份,只会占用非常少量的磁碟空间!

软链接:
	1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
	2.软链接可以 跨文件系统 ,硬链接不可以
	3.软链接可以对一个不存在的文件名进行链接
	4.软链接可以对目录进行链接
硬链接:
	1.硬链接,以文件副本的形式存在。但不占用实际空间。
	2.不允许给目录创建硬链接
	3.硬链接只有在同一个文件系统中才能创建

命令参数
必要参数:
	-b 删除,覆盖以前建立的链接
	-d 允许超级用户制作目录的硬链接
	-f 强制执行
	-i 交互模式,文件存在则提示用户是否覆盖
	-n 把符号链接视为一般目录
	-s 软链接(符号链接)
	-v 显示详细的处理过程
选择参数:
	-S "-S<字尾备份字符串> "或 "--suffix=<字尾备份字符串>"
	-V "-V<备份方式>"或"--version-control=<备份方式>"
	--help 显示帮助信息
	--version 显示版本信息


实例:
(1)为console.out文件创建软链接link2018,如果console.out丢失,link2018将失效:
	ln -s console.out link2018
	输出:link2018 -> console.out


(2)为console.out创建硬链接ln2018,console.out与ln2018的各项属性相同
	ln console.out ln2018
	输出:ln2018

ln就是相当于为一个文件创建了一个超链接 可以快速访问!

24.touch命令:用来创建文件或者修改文件时间戳
命令参数:
-a 或–time=atime或–time=access或–time=use 只更改存取时间。
-c 或–no-create 不建立任何文档。
-d  使用指定的日期时间,而非现在的时间。
-f  此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
-m 或–time=mtime或–time=modify 只更改变动时间。
-r  把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t  使用指定的日期时间,而非现在的时间。

案例:
(1)文件不存在则创建新文件

touch file1.txt file2.txt

(2)修改文件的时间戳,修改file1的时间戳和file2的一致(以file1.txt的为准)

touch -r file1.txt file2.txt
touch file1.txt console.out3 #把console.out3的时间戳修改成file1.txt的(和file1.txt保持一致)

(3)设定文件时间戳

touch -t 201211142234.50 file1.txt
说明:
-t time使用指定的时间值time作为指定文件相应时间戳记的新值
此处的time规定为如下形式的十进制数:
[[CC]YY]MMDDhhmm[.SS]
CC为年数中的前两位,即”世纪数”;
YY为年数的后两位,即某世纪中的年数,
如果不给出CC的值,则touch将把年数CCYY限定在1969–2068之内.
MM为月数,
DD为天数,
hh为小时数(几点),
mm为分钟数,
SS为秒数:此处秒的设定范围是0-61,这样可以处理闰秒.
这些数字组成的时间是环境变量TZ指定的时区中的一个时间.
由于系统的限制,早于1970年1月1日的时间是错误的。

25.man命令:查看某个命令的帮助
man ls #显示ls命令的帮助内容
man ps #显示ps命令的帮助内容

26.w命令:显示登陆用户的详细信息
案例:
输入:
ecdevelop-94:mpsp:/usr/mpsp/offline-serv-yjb/v2/app/log$w
输出:
12:14:54 up 625 days, 5:32, 14 users, load average: 0.04, 0.01, 0.01
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
mpsp pts/0 10.10.81.33 09:25 57:13 0.05s 0.05s -bash
mpsp pts/1 10.10.81.33 09:35 56:36 0.04s 0.04s -bash
mpsp pts/2 10.10.81.221 Mon14 1:00m 0.09s 0.04s tail -200f spEnterprise_batch.log
mpsp pts/3 10.10.81.121 Mon18 0.00s 0.43s 0.01s w
mpsp pts/4 10.10.81.33 09:35 2:39m 0.03s 0.03s -bash
mpsp pts/6 10.10.81.33 09:35 2:39m 0.03s 0.03s -bash
mpsp pts/7 10.10.81.33 09:35 2:39m 0.03s 0.03s -bash
mpsp pts/8 10.10.81.33 09:35 2:39m 0.04s 0.04s -bash
mpsp pts/9 10.10.81.221 Mon10 1:00m 2:39 0.00s tail -200f jvm-app-0.log
mpsp pts/10 10.10.81.221 Mon10 1:00m 0.14s 0.03s tail -200f spEnterprise_detail.log
mpsp pts/11 10.10.81.109 10:41 23:13 0.10s 0.01s /bin/bash ./reserv.sh
mpsp pts/12 10.10.81.190 Mon15 20:12m 0.36s 0.00s /bin/bash ./reserv.sh
mpsp pts/21 10.10.81.196 Mon11 19:39 18.35s 0.00s /bin/bash ./reserv.sh
mpsp pts/24 10.10.81.72 Mon12 20:12m 0.09s 0.00s /bin/bash ./reserv.sh

27.命令who:显示登录用户
案例:
输入:
ecdevelop-94:mpsp:/usr/mpsp/offline-serv-yjb/v2/app/log$who
输出:
mpsp pts/0 2019-01-08 09:25 (10.10.81.33)
mpsp pts/1 2019-01-08 09:35 (10.10.81.33)
mpsp pts/2 2019-01-07 14:58 (10.10.81.221)
mpsp pts/3 2019-01-07 18:53 (10.10.81.121)
mpsp pts/4 2019-01-08 09:35 (10.10.81.33)
mpsp pts/6 2019-01-08 09:35 (10.10.81.33)
mpsp pts/7 2019-01-08 09:35 (10.10.81.33)
mpsp pts/8 2019-01-08 09:35 (10.10.81.33)
mpsp pts/9 2019-01-07 10:17 (10.10.81.221)
mpsp pts/10 2019-01-07 10:30 (10.10.81.221)
mpsp pts/11 2019-01-08 10:41 (10.10.81.109)
mpsp pts/12 2019-01-07 15:39 (10.10.81.190)
mpsp pts/21 2019-01-07 11:45 (10.10.81.196)
mpsp pts/24 2019-01-07 12:04 (10.10.81.72)

28.命令last:查看最近哪些用户登录系统

29.命令date:系统日期设定
date #显示系统当前日期时间(2019年 01月 08日 星期二 12:19:09 CST)
date -s “060520 06:00:00” #设置系统时期为2006年5月2

30.命令clock:时钟设置
clock –r #对系统Bios中读取时间参数
clock –w #将系统时间(如由date设置的时间)写入Bios

tzselect  #时区的设置 

31.命令uname:查看系统版本
uname -r #显示操作系统内核的version(2.6.32-358.el6.x86_64)

32.命令reboot、shutdown:关闭和重新启动计算机
reboot #重新启动计算机
shutdown -r now #重新启动计算机,停止服务后重新启动计(常用)
shutdown -h now #关闭计算机,停止服务后再关闭系统
halt #关闭计算机

33.命令su:切换用户
su - #切换到root用户
su – jiabo #切换到jiabo用户
注意: 使用"-" 将使用用户的环境变量

34.命令free:查看内存和swap分区使用情况

35.命令uptime:现在的时间,系统开机运转到现在经过的时间,连线的使用者数量,最近一分钟,五分钟和十五分钟的系统负载
输入:uptime
输出:14:07:27 up 625 days, 7:24, 14 users, load average: 0.04, 0.01, 0.00

36.命令vmstat:监视虚拟内存使用情况
37.命令iostat:磁盘吞吐量
命令参数:
-c???只显示CPU行
-d???显示磁盘行
-k???以千字节为单位显示磁盘输出
-t???在输出中包括时间戳
-x???在输出中包括扩展的磁盘指标

38.命令clear:清屏

39.chown命令:指定文件的拥有者改为指定的用户或组
用户可以是用户名或者用户ID;
组可以是组名或者组ID;
文件是以空格分开的要改变权限的文件列表,支持通配符。

一般情况下,这个指令只有系统管理者(root)所使用,一般使用者没有权限可以改变别人的文件拥有者,也没有权限可以自己的文件拥有者改设为别人。
只有系统管理者(root)才有这样的权限。
所以,使用权限 : root

语法:chown [-cfhvR] [--help] [--version] user[:group] file...
命令参数:
	user : 新的文件拥有者的使用者 ID
	group : 新的文件拥有者的使用者组(group)
	-c : 显示更改的部分的信息
	-f : 忽略错误信息
	-h :修复符号链接
	-v : 显示详细的处理信息
	-R : 处理指定目录以及其子目录下的所有文件
	--help : 显示辅助说明
	--version : 显示版本

实例:
chown runoob:users file1.txt	#将文件 file1.txt 的拥有者设为 users 群体的使用者 runoob
chown -R lamport:users *        #将目前目录下的所有文件与子目录的拥有者皆设为 users 群体的使用者 lamport

40.chmod命令:可以藉以控制文件如何被他人所调用
Linux的文件调用权限分为三级 : 文件拥有者、群组、其他。
使用权限 : 所有使用者

语法:chmod [-cfvR] [--help] [--version] mode file...

参数说明:
	-c : 若该文件权限确实已经更改,才显示其更改动作
	-f : 若该文件权限无法被更改也不要显示错误讯息
	-v : 显示权限变更的详细资料
	-R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)
	u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
	+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
	r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
	--help : 显示辅助说明
	--version : 显示版本

实例
	chmod ugo+r file1.txt   #将文件 file1.txt 设为所有人皆可读取
	chmod a+r file1.txt    #将文件 file1.txt 设为所有人皆可读取
	chmod ug+w,o-w file1.txt file2.txt    #将文件 file1.txt 与 file2.txt 设为该文件拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入
	chmod u+x ex1.py  #将 ex1.py 设定为只有该文件拥有者可以执行
	chmod -R a+r *    #将目前目录下的所有文件与子目录皆设为任何人可读取
	
	
	此外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  效果相同!!
	chmod ug=rwx,o=x file 和 chmod 771 file  效果相同!!

–===================================================================================================
切换窗口:alt+1,alt+2
全屏:alt+回车

屏幕翻滚类命令
Ctrl+u:向文件首翻半屏
Ctrl+d:向文件尾翻半屏
Ctrl+f:向文件尾翻一屏
Ctrl+b;向文件首翻一屏
nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。

插入文本类命令
i :在光标前
I :在当前行首
a:光标后
A:在当前行尾
o:在当前行之下新开一行
O:在当前行之上新开一行
r:替换当前字符
R:替换当前字符及其后的字符,直至按ESC键
s:从当前光标位置处开始,以输入的文本替代指定数目的字符
S:删除指定数目的行,并以所输入文本代替之
ncw或nCW:修改指定数目的字
nCC:修改指定数目的行

删除命令
ndw或ndW:删除光标处开始及其后的n-1个字
do:删至行首
d$:删至行尾
ndd:删除当前行及其后n-1行
x或X:删除一个字符,x删除光标后的,而X删除光标前的
Ctrl+u:删除输入方式下所输入的文本

选项设置
all:列出所有选项设置情况
term:设置终端类型
ignorance:在搜索中忽略大小写
list:显示制表位(Ctrl+I)和行尾标志($)
number:显示行号
report:显示由面向行的命令修改过的数目
terse:显示简短的警告信息
warn:在转到别的文件时若没保存当前文件则显示NO write信息
nomagic:允许在搜索模式中,使用前面不带“\”的特殊字符
nowrapscan:禁止vi在搜索到达文件两端时,又从另一端开始
mesg:允许vi显示其他用户用write写到自己终端上的信息

末行模式命令
:n1,n2 co n3:将n1行到n2行之间的内容拷贝到第n3行下
:n1,n2 m n3:将n1行到n2行之间的内容移至到第n3行下
:n1,n2 d :将n1行到n2行之间的内容删除
:w :保存当前文件
:e filename:打开文件filename进行编辑
:x:保存当前文件并退出
:q:退出vi
:q!:不保存文件并退出vi
:!command:执行shell命令command
:n1,n2 w!command:将文件中n1行至n2行的内容作为command的输入并执行之,若不指定n1,n2,则表示将整个文件内容作为command的输入
:r!command:将命令command的输出结果放到当前行

–===========================================================================
一些常见的使用案例:
系统
1、# 查看内核/操作系统/CPU信息
# uname -a
2、# 查看操作系统版本
# head -n 1 /etc/issue
3、# 查看CPU信息
# cat /proc/cpuinfo
4、# 查看计算机名
# hostname
5、# 列出所有PCI设备
# lspci -tv
6、# 列出所有USB设备
# lsusb -tv
7、# 列出加载的内核模块
# lsmod
8、# 查看环境变量
# env

资源
9、# 查看内存使用量和交换区使用量
# free -m
10、# 查看各分区使用情况
# df -h
11、# 查看指定目录的大小
# du -sh <目录名>
12、# 查看内存总量
# grep MemTotal /proc/meminfo
13、# 查看空闲内存量
# grep MemFree /proc/meminfo
14、# 查看系统运行时间、用户数、负载
# uptime
15、# 查看系统负载
# cat /proc/loadavg
磁盘和分区
1、# 查看挂接的分区状态
# mount | column -t
2、# 查看所有分区
# fdisk -l
3、# 查看所有交换分区
# swapon -s
网络
1、# 查看所有网络接口的属性(比如主机ip什么的)
# ifconfig
2、# 查看防火墙设置
# iptables -L
3、# 查看路由表
# route -n
4、# 查看所有监听端口
# netstat -lntp
5、# 查看所有已经建立的连接
# netstat -antp
6、# 查看网络统计信息
# netstat -s
进程
1、# 查看所有进程
# ps -ef
2、# 实时显示进程状态
# top
用户
1、# 查看活动用户
# w
2、# 查看指定用户信息
#?id?<用户名>
3、# 查看用户登录日志
# last
4、# 查看系统所有用户
# cut -d: -f1 /etc/passwd
5、# 查看系统所有组
# cut -d: -f1 /etc/group
6、# 查看当前用户的计划任务
# crontab -l
服务
1、# 列出所有系统服务
# chkconfig --list
2、# 列出所有启动的系统服务
# chkconfig --list | grep on
3、# 查看端口
# netstat -ano + tasklist /svc
netstat -ano?查找端口对应PID?
tasklist /svc?根据PID查找服务
netstat -tuln | grep 17002   #查看端口情况

程序
1、# 查看所有安装的软件包
# rpm -qa



压缩:(压缩后包名 压缩前的包名)
tar -zcvf union.com.tar.gz union.com



#启动VPN命令
# service?openvpn?start

linux下重启Apache命令???
linux下安装JDK步骤???
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值