Linux基础-进阶指令

  1. ssh

    • 功能:登录另一台远程计算机
    • 语法:ssh [-l login_name] [-p port] [user@]hostname
    • 用法1:#ssh 192.168.0.11 ,不指定用户,默认使用root账户登录
    • 用法2:#ssh [email protected]或者ssh -l root 192.168.0.11,指定用户
    • 用法3:#ssh -p 1233 [email protected],修改过ssh登录端口(默认为22)需要指定端口
  2. 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 [email protected]:/home/root/music,
      从本地复制1.mp3到远程music目录下
      #scp /home/space/music/1.mp3 [email protected]:/home/root/music/001.mp3,
      从本地复制1.mp3到远程music目录下重命名为001.mp3(如果存在001.mp3则覆盖)
      #scp -r /home/space/music/ [email protected]:/home/root/music1/
      从本地复制music目录到远程:
      • 如果远程music1目录不存在,则效果是复制music目录到远程root下重命名为music1,
      • 如果远程music1目录存在,则是把music复制到远程music1目录下,即远程music1目录下多一个music子目录(或者覆盖);
        可以总结下,源目录复制到目标目录时,如果目标目录不存在,则是重命名的效果,如果目标目录存在,则是目标目录下新建(或覆盖)子目录的效果
    • 从远程复制到本的用法:
      #scp [email protected]:/home/root/others/music /home/space/music1/1.mp3
      #scp -r [email protected]:/home/root/others/music /home/space/music1/
  3. less

    • 常用语法:less [选项] 文件
    • 常用选项:
      -N 显示每行的行号
      -i 忽略搜索时的大小写
    • 常用操作:
      /字符串:向下搜索"字符串"的功能
      ?字符串:向上搜索"字符串"的功能
      n:重复前一个搜索(与 / 或 ? 有关)
      N:反向重复前一个搜索(与 / 或 ? 有关
      Q/q/ZZ:退出less 命令
      y:向上滚动一行
      空格键:滚动一页
      回车键:滚动一行
      [pagedown]: 向下翻动一页
      [pageup]: 向上翻动一页
      b:向后翻一页(没有pageup按键时可以用)
      f:向前翻一页
      G:移动到最后一行
      g:移动到第一行
      v:使用配置的编辑器编辑当前文件
      F:不断的刷新信息(同tail -f 的效果, ctrl+c 结束刷新)
  4. wc

    • 常用语法:wc [选项] 文件
    • 选项:
      -l或--lines 只显示行数(包括空行)。
      -w或--words 只显示字数(依照空格来判断单词数量)。
      -c或--bytes或--chars 只显示Bytes数。
    • 注意:#wc file(不给选项)
      输出的值顺序是:行数、字数、字节数
  5. df

    • 功能:显示目前磁盘使用情况统计
    • 语法:df [选项]... [FILE]...
    • 常用用法:# df -h 可读性较高(显示单位)


      image
  6. free

    • 功能:查看内存使用情况
    • 语法:free [选项]
    • 常用用法:# free -m ,以MB为单位


      image
  7. 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效果相同
  8. 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 解压)
  9. 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变量指定的路径,可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令
  10. grep

  • 功能:查找文件或目录下文件里符合条件的字符串,打印出文件路径和文件内该字符串所在行的内容。
  • 常用语法:grep [选项] 要查找的字符串 文件或目录,文件或目录支持多个或者匹配
  • 常用选项:
    • -r 当指定要查找的是目录而非文件时,必须使用这项参数以递归的方式查找符合条件的文件。
    • -v 显示不包含匹配文本的所有行。
  • 用法1:#grep hello *,在当前目录中,查找文件中包含 hello 字符串的文件,并打印出该字符串的所在行内容(如果当前目录存在子目录,会提示子目录是文件 夹,并不会查找子目录下的文件)。


    Linux基础-进阶指令_第1张图片
    image
  • 用法2:#grep -r 家 /home/test,查找/home/test目录下 及其子目录(如果存在子目录的话)下所有文件中包含字符串"家"的文件,并打印出该字符串所在行的内容
  1. 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
  2. 管道

  • 功能:管道符左边指令的输出就会作为管道符右边指令的输入;连续使用管道意味着第一个指令的输出会作为 第二个指令的输入,第二个指令的输出又会作为第三个指令的输入,依此类推。
  • 语法:指令A|指令B ...
  • 常用用法1:#ps -ef|grep java,在ps的结果中查找出想要查看的进程状态,比如进程名包含java的所有进程
  • 常用用法2:#ls /xx|wc -l,统计xx目录下的文档的总个数
  • 说明:由上两个例子可见,管道符|右边的指令中的路径不写了,其实这个路径代表的是输入,而这个输入现在是管道左边指令的输出。
  1. 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字段的文本
  1. top

  • 功能:查看服务器的进程占的资源,输入top即可,选项可以忽略,按q退出。在运行top的时候,可以按下方便的快捷键:
    • M: 表示将结果按照内存(MEM)从高到低进行降序排列;
    • P:表示将结果按照CPU使用率从高到低进行降序排列;
    • 1:当服务器拥有多个CPU核心的时候可以使用"1"快捷键来切换是否展示显示各个CPU核心的详细信息
      Linux基础-进阶指令_第2张图片
      image

      表头含义:
    • PID:进程id
    • USER:该进程对应的用户
    • PR(权重):优先级
    • NI(nice):用户进程空间内改变过优先级的进程占用CPU百分比 (基本不会用)
    • VIRT:虚拟内存
    • RES:常驻内存
    • SHR:共享内存,计算一个进程实际使用的内存 = 常驻内存(RES) - 共享内存(SHR)
    • S:表示进行的状态(sleeping,其中S表示睡眠,R表示进行)
    • %CPU:表示CPU的占用百分比
    • %MEM:表示内存的占用百分比
    • TIME+ :执行的时间;
    • COMMAND:进程的名称或者路径
  1. 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的统计结果存在差别
  1. ifconfig/ip addr

    • 功能:ifconfig和ip都是用来显示或设置网络设备,ip在逐步替代ifconfig,先只要会看inet后的ip就可以了
    • 用法1:#ifconfig


      image

      #ip addr


      Linux基础-进阶指令_第3张图片
      image
  2. 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端口被哪个进程占用


    Linux基础-进阶指令_第4张图片
    image
  1. 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)
  1. 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的各项属性相同:


    Linux基础-进阶指令_第5张图片
    image
  • 注意:du在统计大小的时候默认不计算同目录下硬链接(即硬链接的源文件也在这个目录下)的大小,添加-l选项会重复计算
  • image

你可能感兴趣的:(Linux基础-进阶指令)