Linux 常用命令

shell 与命令行

shell 分两大类:
第一类,图形界面shell(Graphical User Interface shell 即 GUI shell);
第二类,命令行式shell(Command Line Interface shell ,即CLI shell)。
传统意义上的shell指的是命令行式的shell。

GUI shell 是包裹在 linux 内核外层的,一个可通过一系列的 linux 命令对操作系统发出相关指令的人机界面(如下图);也可以理解成一个命令行解释器。


image

CLI shell 既是一种命令语言,又是一种程序设计语言。它能操作 linux 系统,也可以通过其条件语句和循环语句等,把一系列 linux 命令结合在一起,形成一个相当于面向过程的程序(shell script),来实现一些较为复杂的功能。


命令行快捷键
命令 功能
Ctrl L 清屏
Ctrl M 等效于回车
Ctrl C 中断正在当前正在执行的程序
历史命令
Ctrl P 上一条命令,可以一直按表示一直往前翻
Ctrl N 下一条命令
Ctrl R 再按历史命令中出现过的字符串:按字符串寻找历史命令(重度推荐)
命令行编辑
Tab 自动补齐(重度推荐)
Ctrl A 移动光标到命令行首
Ctrl E 移动光标到命令行尾
Ctrl B 光标后退
Ctrl F 光标前进
ESC F 光标前进一个单词
ESC B 光标后退一格单词
Ctrl ] 从当前光标往后搜索字符串,用于快速移动到该字符串
Ctrl Alt ] 从当前光标往前搜索字符串,用于快速移动到该字符串
Ctrl H 删除光标的前一个字符
Ctrl D 删除当前光标所在字符
Ctrl K 删除光标之后所有字符
Ctrl U 清空当前键入的命令
Ctrl W 删除光标前的单词(Word, 不包含空格的字符串)
Ctrl Y 粘贴Ctrl W或Ctrl K删除的内容
Alt . 粘贴上一条命令的最后一个参数(很有用)
Alt [0-9] Alt . 粘贴上一条命令的第[0-9]个参数
Alt [0-9] Alt . Alt. 粘贴上上一条命令的第[0-9]个参数
Ctrl X Ctrl E 调出系统默认编辑器编辑当前输入的命令,退出编辑器时,命令执行

系统管理
  • 系统关机、重启

    命令 功能
    shutdown -h now 关闭系统
    shutdown -h HH:MM 定时关机
    shutdown -c 取消定时关机
    shutdown -r now 重启
    logout 注销
  • 进程

    • 先了解下linux 上进程的几种状态

      符号 描述
      R runnable 正在运行或者在运行队列中等待
      S sleeping 中断(休眠中,受阻,在等待某个条件的形成或接收到信号)
      D uninterruptible sleep 不可中断(收到信号不唤醒和不可运行,进程必须等待直到有中断发生)
      Z a defunct/zombie process 僵死(进程已终止,但是进程描述符仍存在,直到父进程调用wait4()后释放)
      T traced or stopped 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGOUT 信号后停止运行)
    • ps(process status)

      命令 功能
      ps -A | ps -e 显示所有程序
      ps -a 显示所有终端机下执行的程序
      ps -u<用户名> 列出属于该用户的程序的状况
      ps a 显示现行终端机下的所有程序,包括其他用户的程序
      ps u 以用户为主的格式来显示程序状况
      ps -ef 显示所有进程信息,System V 风格
      ps aux 显示所有进程信息,BSD风格
      ls /proc/ | grep '^[1-9]' 显示所有进程信息,从 /proc/ 目录读取

      详解 ps aux 与ps -ef 区别

    • kill <选项> <参数:进程或作业识别号>
      用来删除执行中的程序或工作
      $ pgrep -l ssh
      2979 ssh
      $ kill 2979

    • pkill <选项> <参数>
      可以按照进程名杀死进程
      $ pkill ssh

    • killall <选项> <参数>
      使用进程的名称来杀死进程,使用此指令可以杀死一组同名进程

文件目录管理
  • 文件或目录的增删改查

    • cd

      命令 功能
      cd /home 进入'/home'目录
      cd .. 返回上一级目录
      cd ../.. 返回上两级目录
      cd 进入个人主目录
      cd ~user 进入个人主目录
      cd - 返回上次所在目录
    • ls

      命令 功能
      ls 查看目录中的文件
      ls -F 文件类型标识符
      ls -l 查看文件和目录的详细信息
      ls -a 显示隐藏文件
      ls -i 显示文件索引节点号(inode),一个索引节点代表一个文件
      $ ls -il
      12885654371 drwxr-xr-x  90 cyan  staff    2880 Nov  8 17:36 bak
      含义:
        inode:
          索引节点
        文件类型与权限:
          文件类型:
            d 目录
          权限:
            rwx 文件属主可读、可写、不可执行
            r-x 文件所归属的用户组不可写,可读,可执行
            r-x 其它用户不可写,可读,可执行
        硬链接个数
        文件属主
        文件属组
        文件大小
        访问/修改时间
        文件/目录名
      
    • mkdir

      命令 功能
      mkdir dir1 创建一个目录
      mkdir dir1 dir2 创建两个目录
      mkdir -p /tmp/dir1/dir2 创建一个目录树
    • rm

      命令 功能
      rm -f file1 删除文件
      rmdir dir1 删除目录
      rm -rf dir1 删除目录并删除其内容
      rm -rf dir1 dir2 删除两个目录并删除其内容
    • mv

      命令 功能
      mv dir1 new_dir 移动/重命名一个目录
    • cp

      命令 功能
      cp file1 file2 复制一个文件
      cp dir/* . 复制一个目录下的所有文件到当前目录
      cp -a /tmp/dir1 . 复制一个目录到当前目录
      cp -a dir1 dir2 复制一个目录
    • find

      命令 功能
      find / -name file1 从 '/' 开始进入根文件系统搜索文件和目录
      find / -user user1 搜索属于用户 'user1' 的文件和目录
      find /home/user1 -name *.bin 在目录 '/ home/user1' 中搜索带有'.bin' 结尾的文件
      find / -mtime 0 最近24h修改的文件
    • grep(global search regular expression(RE) and print out the line)

      命令 功能
      grep pattern file_1 file_2... 在文件中搜索一个单词,返回一个包含 pattern 的文本行
      grep pattern . -r -n 在多级目录中对文件进行递归搜索
      grep -c pattern file 统计包含匹配字符串的行数
      grep pattern -n file 输出包含匹配字符串的行数
      grep -E [1-9]+ file 使用正则表达式
      echo string | grep -i str 忽略匹配样式的字符串大小写
      echo string | grep -o -E [a-z]+ 只输出匹配到的部分
    • 其他

      命令 功能
      > file_name 删除文件内容
      echo "text" > file_name 将"text"写入文件
      cat file_name (输出设备)显示文件内容
      pwd 显示工作路径
      whereis halt 显示一个二进制文件、源码或man的位置
      which halt 显示一个二进制文件或可执行文件的完整路径
      ps -ef | wc -l 所有进程数量,wc -l 用来统计行数
      find . -name ".log." -exec ls {} ; find . -name ".log." -exec rm -rf {} ; 递归删除文件
  • 文件权限


    linux文件权限.gif
    • chown

      命令 功能
      chown 改变某个文件或目录的所有者和所属的组
      chown -R cyan /usr/meng 将目录/usr/meng及其下面的所有文件、子目录的文件主改成 cyan
    • chmod

      命令 功能
      chmod 变更文件或目录的权限。在UNIX系统家族里,文件或目录权限的控制分别以读取、写入、执行3种一般权限来区分
      u User即文件或目录的拥有者
      g Group即文件或目录的所属群组
      o Other除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围
      a All即全部的用户,包含拥有者,所属群组以及其他用户
      r 读取权限,数字代号为“4”
      w 写入权限,数字代号为“2”
      x 执行或切换权限,数字代号为“1”
      - 不具任何权限,数字代号为“0”
      s 特殊功能说明:变更文件或目录的权限
      chmod u+x,g+w f01 为文件f01设置自己可以执行,组员可以写入的权限
      chmod 764 f01 为文件f01设置自己读写执行权限,组员可以读写权限,其他读权限
      chmod u=rwx,g=rw,o=r f01 为文件f01设置自己读写执行权限,组员可以读写权限,其他读权限
网络管理
  • netstat

    命令 功能
    netstat 网络系统的状态信息
    netstat -tulp | grep 8000 显示端口是8000的使用情况,t=tcp u=udp l=监听状态的服务 p=显示进程信息
软件|硬件|监控|打印
  • lsof

    命令 功能
    lsof 用于查看进程开打的文件,打开文件的进程,进程打开的端口
    lsof filename 列出打开 filename文件的所有进程
    lsof -c <进程名> 列出指定进程名打开的文件
    lsof -p <进程号> 列出指定进程号所打开的文件
    lsof -i:8080 列出符合条件的进程
  • and

    命令 功能
    man 帮助指令
    date 显示/设置系统日期
    cal 2019 显示2019年的日历表
    xargs 给其他命令传递参数的一个过滤器,默认命令echo,默认定界符空格
    ls *.jpg | xargs -n1 -I cp {} /data/images xargs 用例,复制所有图片到目的路径
    df 显示磁盘分区上的可使用的磁盘空间
    du 对文件和目录磁盘使用的空间的查看
    top 实时查看系统的整体运行情况,包括进程号、内存、CPU使用等

实践
  • ./filename 与 sh filename、source filename 执行脚本的区别

    1. 当shell脚本具有可执行权限时,用sh filename与./filename执行脚本是没有区别得。./filename是因为当前目录没有在PATH中,所有”.”是用来表示当前目录的。
    2. sh filename 重新建立一个子shell,在子shell中执行脚本里面的语句,该子shell继承父shell的环境变量,但子shell新建的、改变的变量不会被带回父shell。
    3. source filename:这个命令其实只是简单地读取脚本里面的语句依次在当前shell里面执行,没有建立新的子shell。那么脚本里面所有新建、改变变量的语句都会保存在当前shell里面。
  • 当磁盘满了

    命令 功能
    linux磁盘分区 磁盘分区(挂载目录)
    查看分区占用信息 df -lh
    查找最大文件 du -h --max-depth=1
    查看文件大小(按字节) du -b
    ls -lhS 将文件按大小排序展示
  • >/dev/null 2>&1 命令解析

    /dev/null 等同于一个只写文件。所有写入它的内容都会永远丢失,尝试从它那儿读取内容什么也读取不到。

    1 表示stdout标准输出,所以 ">/dev/null"等同于"1>/dev/null"
    2 表示stderr标准错误
    & 表示等同于的意思,2>&1表示输出错误的重定向等同于标出输出

    组合含义就是丢弃所有的标准输出及标准错误,不输出任何信息到终端。

  • 查找 docker 日志并清空

    #!/bin/sh
    echo "======== docker containers logs file size ========"  
    logs=$(find /var/lib/docker/containers/ -name *-json.log)  
    for log in $logs  
            do  
                 ls -lh $log   
            done
    
    #!/bin/sh 
    echo "======== start clean docker containers logs ========"  
    logs=$(find /var/lib/docker/containers/ -name *-json.log)  
    for log in $logs  
            do  
                    echo "clean logs : $log"  
                    cat /dev/null > $log  
            done  
    echo "======== end clean docker containers logs ========" 
    

你可能感兴趣的:(Linux 常用命令)