欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Linux常用指令总结

程序员文章站 2022-05-16 18:43:27
...

常用的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).
	[[email protected] ~]# 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 那行,要将捉到的关键字显色,且加上行号来表示:
	[[email protected] ~]# 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 那行,在关键字所在行的前两行与后三行也一起捉出来显示
	[[email protected] ~]# 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            #列出目前所有的正在内存当中的程序
		[[email protected] 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号
		
		[[email protected] 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)
		[[email protected] 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 [email protected] 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步骤???