Linux基础-进阶指令
2019-01-31 本文已影响130人
5fafe9a996b9
-
ssh
- 功能:登录另一台远程计算机
- 语法:
ssh [-l login_name] [-p port] [user@]hostname
- 用法1:#ssh 192.168.0.11 ,不指定用户,默认使用root账户登录
- 用法2:#ssh root@192.168.0.11或者ssh -l root 192.168.0.11,指定用户
- 用法3:#ssh -p 1233 admn@192.168.0.11,修改过ssh登录端口(默认为22)需要指定端口
-
scp
- 功能:用于服务器之间复制文件和目录
- 语法:
scp [选项] file_source file_target
,本质上与cp是一致的,区别在于远程的地址要加用户名:远程ip:
的前缀
比如从本地复制到远程:file_target应该是remote_username@remote_ip:remote_folder/file
比如从远程复制到本地:file_source应该是remote_username@remote_ip:remote_folder/file - 常用选项:
-r: 递归复制整个目录 - 从本地复制到远程的用法:
#scp /home/space/music1/1.mp3 root@172.16.50.15:/home/root/music,
从本地复制1.mp3到远程music目录下
#scp /home/space/music/1.mp3 root@172.16.50.15:/home/root/music/001.mp3,
从本地复制1.mp3到远程music目录下重命名为001.mp3(如果存在001.mp3则覆盖)
#scp -r /home/space/music/ root@172.16.50.15:/home/root/music1/
从本地复制music目录到远程:- 如果远程music1目录不存在,则效果是复制music目录到远程root下重命名为music1,
- 如果远程music1目录存在,则是把music复制到远程music1目录下,即远程music1目录下多一个music子目录(或者覆盖);
可以总结下,源目录复制到目标目录时,如果目标目录不存在,则是重命名的效果,如果目标目录存在,则是目标目录下新建(或覆盖)子目录的效果
- 从远程复制到本的用法:
#scp root@172.16.50:/home/root/others/music /home/space/music1/1.mp3
#scp -r root@172.16.50:/home/root/others/music /home/space/music1/
-
less
- 常用语法:
less [选项] 文件
- 常用选项:
-N 显示每行的行号
-i 忽略搜索时的大小写 - 常用操作:
/字符串:向下搜索"字符串"的功能
?字符串:向上搜索"字符串"的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关
Q/q/ZZ:退出less 命令
y:向上滚动一行
空格键:滚动一页
回车键:滚动一行
[pagedown]: 向下翻动一页
[pageup]: 向上翻动一页
b:向后翻一页(没有pageup按键时可以用)
f:向前翻一页
G:移动到最后一行
g:移动到第一行
v:使用配置的编辑器编辑当前文件
F:不断的刷新信息(同tail -f 的效果, ctrl+c 结束刷新)
- 常用语法:
-
wc
- 常用语法:
wc [选项] 文件
- 选项:
-l或--lines 只显示行数(包括空行)。
-w或--words 只显示字数(依照空格来判断单词数量)。
-c或--bytes或--chars 只显示Bytes数。 - 注意:#wc file(不给选项)
输出的值顺序是:行数、字数、字节数
- 常用语法:
-
df
- 功能:显示目前磁盘使用情况统计
- 语法:
df [选项]... [FILE]...
-
常用用法:# df -h 可读性较高(显示单位)
image
-
free
- 功能:查看内存使用情况
- 语法:
free [选项]
-
常用用法:# free -m ,以MB为单位
image
-
chmod
- 功能:改变文件的读写
- 常用语法:
chmod [选项] mode 文件(支持多个和通配)
,
常用选项是 -R(对目前目录下的所有文件与子目录进行相同的权限变更);
mode : 权限设定字串,格式是[ugoa...][[+-=][rwxX]...][,...]
,其中:- u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
- + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
- r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行;也可以用数字来表示权限属性组合:
若要rwx属性则4+2+1=7,
若要rw-属性则4+2=6,
若要r-x属性则4+1=5。
- 示例1:#chmod ugo+r file1.txt 将文件 file1.txt 设为所有人皆可读取
- 示例2:#chmod ug+w,o-w file1.txt file2.txt
将文件 file1.txt 与 file2.txt 设为该文件拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 - 示例3:#chmod -R a+r *
将目前目录下的所有文件与子目录皆设为任何人可读取 - 示例4:#chmod 777 file ,第一个数字表示u的权限,第二个表示g的权限,第三个表示o的权限
所以777和a=rwx效果相同
-
tar
- 功能:压缩、解压文件
- 选项:
- -c: 压缩
- -x:解压
- -t:查看内容
- -r:向压缩归档文件末尾追加文件
- -u:更新原压缩包中的文件
- -v:显示所有过程
- -f: 指定待处理的文件,切记,这个参数是最后一个参数,后面只能接文件名
- 用法1:#tar -x[处理方式]vf 文件,解亚文件
- 用法2:#tar -c[处理方式]vf 待生成的压缩文件 需要压缩的文件(支持多个和匹配),压缩文件
- 用法3:#tar -t[处理方式]vf 文件,列出压缩文件的内容
- 处理方式有:
- -z:通过gzip指令处理,对应的压缩文件后缀是 gz(用 gzip -d或者gunzip 解压),tar归档后的压缩文件后缀是tar.gz(用 tar -xzf 解压)
- -j:通过bz2指令处理,对应的压缩文件后缀是 bz2(用 bzip2 -d或者用bunzip2 解压),tar归档后的压缩文件后缀是tar.bz2(用tar -xjf 解压)
- -Z:通过compress指令处理备份,对应的压缩文件后缀是 Z(用 uncompress 解压),tar归档后的压缩文件后缀是tar.Z(用tar -xZf 解压)
-
find
- 功能:指定目录下查找子目录、文件
- 常用语法:
find 路径范围 选项 选项的值
- 常用选项:
- -name:按照文档名称进行搜索(支持模糊搜索)
- -type:"d"表示目录,"f"表示文件
- 用法1:# find . -name "*.conf",将目前目录及其子目录下所有后缀是 conf 的文件列出来
- 用法2:# find . -type f,将目前目录及其下子目录中所有文件列出
- 用法3:# find /home/admin -name "aa*" -type f,将/home/admin目录及其子目录下所有aa开头的文件列出来
- 其它文件查找指令:
- locate:是“find -name”的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令(需要权限),手动更新数据库。
- whereis:只能用于程序名的搜索
- which:根据PATH变量指定的路径,可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令
-
grep
- 功能:查找文件或目录下文件里符合条件的字符串,打印出文件路径和文件内该字符串所在行的内容。
- 常用语法:
grep [选项] 要查找的字符串 文件或目录
,文件或目录支持多个或者匹配 - 常用选项:
- -r 当指定要查找的是目录而非文件时,必须使用这项参数以递归的方式查找符合条件的文件。
- -v 显示不包含匹配文本的所有行。
-
用法1:#grep hello *,在当前目录中,查找文件中包含 hello 字符串的文件,并打印出该字符串的所在行内容(如果当前目录存在子目录,会提示子目录是文件 夹,并不会查找子目录下的文件)。
image - 用法2:#grep -r 家 /home/test,查找/home/test目录下 及其子目录(如果存在子目录的话)下所有文件中包含字符串"家"的文件,并打印出该字符串所在行的内容
-
ps
- 功能:用于显示当前进程 (process) 的状态。
- 语法:
ps [选项 ]
- 常用选项:
- aux 显示所有进程较详细的资讯
- -A 显示所有进程 (等价于-e)
- -e 等于“-A”
- -f 全部列出,通常和其他选项联用。如:ps -fa or ps -fx
- x 显示所有程序,不以终端机来区分
- 用法1:#ps aux,显示的项目有:USER、PID、%CPU、%MEM、VSZ、RSS、 TTY、STAT、START、TIME、COMMAND,各列代表的意义:
(1)USER:进程的属主;
(2)PID:进程的ID;
(3)%CPU:进程占用的CPU百分比;
(4)%MEM:占用内存的百分比;
(5)VSZ:该进程使用的虚拟内存量(KB);
(6)RSS:该进程占用的固定内存量(KB)(驻留中页的数量);
(7)TTY:该进程在哪个终端上运行(登陆者的终端位置),若与终端无关,则显示(?)。若为pts/0等,则表示由网络连接主机进程
(8)STAT:进程状态,其中S-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R-正在运行,D-短期等待,Z-僵死进程,T-被跟踪或者被停止等等
(9)START:该进程被触发启动时间;
(10)TIME:该进程实际使用CPU运行的时间;
(11)COMMAND:命令的名称和参数; - 用法2:#ps -ef,显示的项目有:UID、PID、PPID、C、 STIME、TTY、TIME、CMD ,各列代表的意义:
(1)UID:用户ID
(2)PID:进程ID
(3)PPID:父进程ID
(4)C:CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高
(5)STIME:进程启动的时间
(6)TTY:完整的终端名称
(7)TIME:CPU时间
(8)CMD:完整的启动进程所用的命令和参数
image - 注意:"ps -aux"不同于"ps aux",使用时两者之间直接选择ps aux;ps aux 和ps -ef,两者的输出结果差别不大,但展示风格不同。aux是BSD风格,-ef是System V风格。如果想查看进程的CPU占用率和内存占用率,可以使用aux,如果想查看进程的父进程ID和完整的COMMAND命令,可以使用ef
-
管道
- 功能:管道符左边指令的输出就会作为管道符右边指令的输入;连续使用管道意味着第一个指令的输出会作为 第二个指令的输入,第二个指令的输出又会作为第三个指令的输入,依此类推。
- 语法:
指令A|指令B ...
- 常用用法1:#ps -ef|grep java,在ps的结果中查找出想要查看的进程状态,比如进程名包含java的所有进程
- 常用用法2:#ls /xx|wc -l,统计xx目录下的文档的总个数
- 说明:由上两个例子可见,管道符|右边的指令中的路径不写了,其实这个路径代表的是输入,而这个输入现在是管道左边指令的输出。
-
xargs
- 功能:是给命令传递参数的一个过滤器,能够捕获一个命令的输出,然后传递给另外一个命令,一般是和管道一起使用。
- 常用用法1:find . -name "*.txt"|xargs rm -f,删除当前目录下所有后缀为txt的文件
-
xargs和管道符 "|"的区别:
- 管道符 将 “|” 之前的命令标准输出,作为之后命令的标准输入。
find . -name ".java" | grep "Activity"
意思是得到当前文件路径下包含Activity字符串的java文件 - xargs 将上一命令的标准输出,作为后面命令的参数args。
find . -name ".java" | xargs grep "Activity"
意思是得到当前文件路径下java文件中包含Activity字段的文本
- 管道符 将 “|” 之前的命令标准输出,作为之后命令的标准输入。
-
top
- 功能:查看服务器的进程占的资源,输入top即可,选项可以忽略,按q退出。在运行top的时候,可以按下方便的快捷键:
- M: 表示将结果按照内存(MEM)从高到低进行降序排列;
- P:表示将结果按照CPU使用率从高到低进行降序排列;
- 1:当服务器拥有多个CPU核心的时候可以使用"1"快捷键来切换是否展示显示各个CPU核心的详细信息
image
表头含义: - PID:进程id
- USER:该进程对应的用户
- PR(权重):优先级
- NI(nice):用户进程空间内改变过优先级的进程占用CPU百分比 (基本不会用)
- VIRT:虚拟内存
- RES:常驻内存
- SHR:共享内存,计算一个进程实际使用的内存 = 常驻内存(RES) - 共享内存(SHR)
- S:表示进行的状态(sleeping,其中S表示睡眠,R表示进行)
- %CPU:表示CPU的占用百分比
- %MEM:表示内存的占用百分比
- TIME+ :执行的时间;
- COMMAND:进程的名称或者路径
-
du
- 功能:显示目录或文件的大小
- 语法:
du [选项] [目录或文件]
- 常用选项:
- -a或-all 显示目录中个别文件的大小
- -h或--human-readable 以K,M,G为单位,提高信息的可读性
- -s或--summarize 仅显示总计
- --exclude=<目录或文件> 略过指定的目录或文件
- --max-depth=<目录层数> 超过指定层数的目录后,不予显示
- 用法1:# du -h test,查看test目录及test目录下的所有子目录与文件的大小
- 用法2:#du -sh test,显示test目录总大小
- 用法3:#du -h --max-depth=1,查看当前目录下所有一级子目录与文件大小
- 用法4:#du -h --max-depth=1 |grep 'G' |sort ,查看名称包含G的目录或文件并排序
- 用法5:#du -h --exclude='*xyz*',列出当前目录中的目录名不包括xyz字符串的目录与文件的大小
- 注意:
du -sh *
也是统计当前目录下一级目录与文件,但不统计隐藏的文件与目录,所以与du -h --max-depth=1
的统计结果存在差别
-
ifconfig/ip addr
- 功能:ifconfig和ip都是用来显示或设置网络设备,ip在逐步替代ifconfig,先只要会看inet后的ip就可以了
-
用法1:#ifconfig
image
#ip addr
image
-
netstat
- 语法:
netstat [选项]
- 常用选项:
- -p或--programs 显示正在使用Socket的程序识别码和程序名称,root查看所有的进程id,普通用户只能查看属于自己的进程id,不是自己的显示为 -。
- -u或--udp 显示UDP传输协议的连线状况。
- -t或--tcp 显示TCP传输协议的连线状况。
- -n或--numeric 直接使用IP地址,而不通过域名服务器。
- -l或--listening 显示监控中的服务器的Socket。
- 用法1:#netstat -tnlp,只列出tcp协议的、状态为LINTEM连接,地址显示为IP地址,显示发起连接的进程pid和进程名称
-
用法2:#netstat -tnlp|grep 8161,查看8161端口被哪个进程占用
image
-
kill
- 功能:发送指定的信号到相应进程。不指定型号将发送SIGTERM(15)终止指定进程。如果任无法终止该程序可用“-KILL” 参数,其发送的信号为SIGKILL(9) ,将强制结束进程,使用ps命令或者jobs 命令可以查看进程号。root用户将影响用户的进程,非root用户只能影响自己的进程
- 用法1:#kill -9 进程id,彻底杀死进程
- 用法2:#kill -9 $(ps -ef | grep peidalinux),过滤出hnlinux进程并杀死
- 用法3:#kill -u admin,杀死用户admin下的所有进程
- 说明:只有第9种信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权利忽略。 下面是常用的信号:
HUP 1 终端断线
INT 2 中断(同 Ctrl + C)
QUIT 3 退出(同 Ctrl + \)
TERM 15 终止
KILL 9 强制终止
CONT 18 继续(与STOP相反, fg/bg命令)
STOP 19 暂停(同 Ctrl + Z)
-
ln
- 功能:某一个文件或目录在另外一个位置建立一个同步的链接
- 语法:
ln [选项][源文件或目录][目标文件或目录]
- 常用选项:
- -s 软链接(符号链接)
- -b 删除,覆盖以前建立的链接
- -f 强制执行
-
软链接与硬链接:
软链接可以看作是Windows中的快捷方式,可以让你快速链接到目标档案或目录。
硬链接则透过文件系统的inode来产生新档名,而不是产生新文件数据,
形象描述是看到的文件其实是索引,索引指向文件数据,假设为文件A创建链接,硬链接是创建新索引指向A的文件数据,软连接是创建新索引指向文件A的索引。 - 硬链接的特点:
1.硬链接,以文件副本的形式存在。不占用实际空间
2.不允许给目录创建硬链接(缺点)
3.硬链接只有在同一个文件系统中才能创建(缺点) - 软链接的特点:
1.当原文件从一个目录下移到其他目录中,再访问链接文件,系统就找不到了(缺点)
2.软链接可以跨文件系统 ,硬链接不可以
3.软链接可以对一个不存在的文件名进行链接
4.软链接可以对目录进行链接 - 软链接与硬链接区别:
1.硬链接原文件/链接文件公用一个文件inode号,说明他们是同一个文件,而软链接原文件/链接文件拥有不同的inode号,表明他们是两个不同的文件;
2.在文件属性上软链接明确写出了是链接文件,而硬链接没有写出来,因为在本质上硬链接文件和原文件是完全平等关系;
3.链接数目是不一样的,硬链接的会在原来基础上加一,软链接的链接数目不会增加;
4.文件大小是不一样的,硬链接文件显示的大小是跟原文件是一样的。而软链接显示的大小与原文件就不同 -
用法1:#ln -s log2013.log link2013, 给文件创建软链接,为log2013.log文件创建软链接link2013,如果log2013.log丢失,link2013将失效:
image -
用法1:#ln log2013.log ln2013,给文件创建硬链接,为log2013.log创建硬链接ln2013,log2013.log与ln2013的各项属性相同:
image - 注意:du在统计大小的时候默认不计算同目录下硬链接(即硬链接的源文件也在这个目录下)的大小,添加-l选项会重复计算
- image