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).
[[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步骤???
上一篇: 菠菜茼蒿汁好喝吗,有什么功效