<返回更多

Linux基础-进阶指令

2022-11-09  今日头条  文字纪
加入收藏

昨天分享了linux系统的一些初级指令,今天给大家整理了更多的指令介绍。

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 可读性较高(显示单位)

图1 df -h命令结果显示


free

● 功能:查看内存使用情况

● 语法:free [选项]

● 常用用法:# free -m ,以MB为单位

图2 free -命令结果显示


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 字符串的文件,并打印出该字符串的所在行内容(如果当前目录存在子目录,会提示子目录是文件 夹,并不会查找子目录下的文件)。

图3 grep hello *命令执行结果

● 用法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:完整的启动进程所用的命令和参数

● 注意:"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核心的详细信息

图4 top命令执行结果

表头含义:

● 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,先只要会看.NET后的ip就可以了

● 用法:# ifconfig

图5 ifconfig命令执行结果

● 用法:# ip addr

图6 ip addr命令执行结果


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端口被哪个进程占用

图7 netstat -tnlp命令执行结果


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将失效:

图8 查看ln -s执行结果

● 用法2:# ln log2013.log ln2013,给文件创建硬链接,为log2013.log创建硬链接ln2013,log2013.log与ln2013的各项属性相同:

图9 查看ln执行结果

● 注意:du在统计大小的时候默认不计算同目录下硬链接(即硬链接的源文件也在这个目录下)的大小,添加-l选项会重复计算

 

以上内容希望对初学Linux的你有所帮助。

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>