昨天分享了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的你有所帮助。