美文网首页
工作中使用的linux命令

工作中使用的linux命令

作者: 436048bfc6a1 | 来源:发表于2018-10-28 14:41 被阅读0次
    1. pwd: 查看当前光标所在的路径

    2. home directory: 当前用户所在的默认目录
      /root : 超级管理员的默认目录

    3. cd 切换

      (1) cd path : 切换到指定路径
      (2) cd : 直接切换到home directory
      (3) cd - : 回退到上一次输命令时所在的目录
      (4) cd ~ : 切换到当前用户的home directory
      (5) cd ../ : 切换到上一层目录
      (6) cd ../../ : 切换到上两层目录
      
    4. ls 查看当前目录下的文件和文件夹的名称

      (1) ls -l(简写为ll) : 查看当前目录下的文件和文件夹的详细信息
            a)  ll + 文件夹名称:查看当前目录下特定的文件夹里文件或文件 
                               夹的信息
           b) ll /usr/sbin/user* : 显示/usr/sbin文件夹下以user开头的文件
      (2) ls -l -a : 查看隐藏文件( 隐藏文件和隐藏文件夹以 "."开头 )
      (3) ls -l -h : 查看文件的大小( 不是文件夹 )
      (4) ls -l -rt : 将该目录下的文件或文件夹以时间顺序排序
      
    5. mkdir 创建文件夹

      (1) mkdir + 文件夹名称 : 创建一层文件夹
      (2) mkdir -p : 级联创建文件夹
            a) mkdir -p 1/2/3 : 在当前目录下递归创建文件夹
            b) mkdir -p /1/2/3 : 在根目录下递归创建文件夹
      (3) mkdir 4 5 6 : 在光标所在的目录下创建3个文件夹 4 5 6
      
    6. 绝对路径与相对路径

      (1) 绝对路径: 从根目录开始的路径
      (2) 相对路径: 从当前目录( pwd得到的目录 )开始的路径
      
    7. 创建文件

      (1) vim + 文件名:
      (2) touch + 文件名 : 创建一个空文件
    
    1. mv 与 cp
      (1) mv henry.log   newFolder : 将henry.log移动到newFolder文件夹
          (类似于windows的剪切)
      (2) cp henry.log   newFolder : 将henry.log复制到newFolder
    
    1. ">" 与 ">>"
      (1) echo "hello" > henry.log : 清空henry.log的内容,将hello写入到      
                                     henry.log的原有内容的后面
      (2) echo "hello" >> henry.log : 不清空henry.log, 将hello追加到 
                                      henry.log中
    
    1. 显示文件内容命令
      (1) cat  henry.log : 将henry.log的内容全部显示在terminal中
      (2) more henry.log : 将henry.log的内容分页显示在terminal中
      (3) less henry.log : 将henry.log的内容分页显示在terminal中
          (在工作中没怎么使用过,等用到了再探讨它与less的区别)
    
    1. 配置命令别名
      (1) alias cdrz = 'cd  /root/henry' : 临时配置 cdrz 为 cd /root/henry, 但 
           是此为临时配置, 即打开另一个terminal无法找到该别名
    
    1. 全局环境变量配置
      (1) 在 /etc/profile 中写入全局环境变量
      (2) source /etc/profile :生效全局环境变量配置
    
    1. 个人环境变量
      (1) 配置文件: home_directory/.bash_profile 
                   OR
                   home_directory/.bashrc
      (2) 生效个人环境变量 : source home_directory/.bash_profile 
                           OR
                          . .bash_profile(此时路径就是home_directory)
    
    1. 切换用户
       (1) su henry: 切换到henry账户,并且所在目录即输入su命令时所在的目录, 不执行环境变量
       (2) su - henry: 切换到henry账户,并且所在目录即henry的home directory, 执行环境变量
    
    1. 删除文件
    (1) rm henry.log : 删除henry.log文件(先询问是否还要删除,如果是自己
                       创建的就直接删除)
    (2) rm -f henry.log : 强制删除henry.log, 不询问
    (3) rm -rf henry.log : 不询问删除文件夹
    
    1. 查询历史命令
    history : 将输入过的命令一行一行显示
    !241: 执行屏幕上241行的命令
    
    1. 用户与用户组
    (1) 寻找与用户相关的文件:  ll /usr/sbin/user*
    (2) 寻找与组相关的文件: ll /usr/sbin/group*
    (3) 增加用户henry: useradd henry
    (4) 查看用户henry的id信息: id henry
        显示结果:( 用户id, 主组id, 组id)
                 uid=501(henry) gid=501(henry) 组=501(henry)
        注: 创建了一个henry用户, henry用户组, 其中henry用户组为主组
    (5) 删除用户henry: userdel henry
        注: 在删除用户henry之后,其home directory不会删除,如果重新创建用户henry,
            系统会报警告:此主目录已经存在。
    (6) 查看系统中的所有用户 : cat /etc/passwd
        teminal显示: henry:x:501:501::/home/henry:/bin/bash
        其中/home/henry为henry用户的home directory
    (7) 如何使henry用户无法登录: 在 /etc/passwd中修改
        a) henry:x:501:501::/home/henry:/bin/nologin
           再次登录henry用户时,会报su: /bin/nologin: No such file 
           or directory 错误
        b) henry:x:501:501::/home/henry:/bin/false
           切换到用户henry时没有提示,切换失败
    (8) 如何找到组: cat /etc/henry
    (9) 增加组: groupadd newGroup
    (10) 将某个用户添加到新组中: usermod -a -G newGroup henry
         此时henry的情况: 
         uid=501(henry) gid=501(henry) groups=501(henry),502(newGroup)
         此时henry的主组还是henry组
    (11) 将newGroup设置为henry的主组: usermod -g newGroup henry
         但是此时henry的信息里没有henry组
         uid=501(henry) gid=502(newGroup) groups=502(newGroup)
         所以需要将henry组加回到henry用户
    
    1. 如何查看命令帮助
    (1) man + 命令  : 详细帮助
    (2) 命令 --help : 精简帮助 
    (3) 以usermod为例:
          a) 输入usermod --help显示
             Usage: usermod [options] username : 表示命令如何使用, []表示可选选项
             -G, --groups GROUPS  new list of supplementary GROUPS
             (命令简写, 命令全拼 哪个组 命令代表的意思)
    

    19 管道符

    (1) 管道符 : "|"
    (2) 管道符作用 : 命令1 | 命令2 ===> 将命令1结果作为命令2的输入
    (3) 统计文件中有多少行: cat henry.log | wc -l
    (4) 模糊匹配: cat henry.log | grep aod 
                 找到文件中包含aod字符的行
    
    1. 重置用户密码
    (1)passwd henry
       由于之前在/etc/profile中将henry的home directory修改了,但是没有将
       原home directory的隐藏文件复制过来,所以当su henry时, 会出现bash-4.1$ 
    
       解决方案是cp /etc/skel/* newHomeDirectory, 之后再修改权限
    
    1. 修改权限
    (1) 什么是权限
        a) 读:  r 4   (读命令: cat, more)
        b) 写:  w 2  (写命令 >, >>, vim) 
        c) 执:  x 1  (一般是对于shell脚本来说)
        d) 无权限: - 0
    (2) Example
        drwxrwxr-x. 2 henry henry 4096 Oct 1 16:37 newFolder
    
        d代表目录,d之后有三组权限: rwx rwx r-x <==> 775
        第一组: 代表当前用户henry对该文件或文件夹的权限,可读可写可执行
        第二组: 代表当前用户组的所有成员对该文件的权限,也是可读可写可执行
        第三组: 代表其他用户组的所有成员对该文件的权限,可读不可写可执行
    
    (3) 修改权限
        chmod 755 -R /home: 递归的给/home下的文件和文件夹修改权限
    (4) shell脚本
          a) 头部添加 #!/bin/bash
          b) 赋予权限
              i) 给其他用户赋予权限: "." + 相对路径 或者 直接输入绝对路径
              ii) 给其他用户不赋予x权限: 使用sh命令执行脚本
    
    1. 网络安装
    (1) yum install httpd : 网络安装httpd
    (2) yum -y install httpd : 不询问 y/n 的方式安装httpd
    (3) service httpd status : 查看httpd是否启动
        service httpd status: 启动httpd
    (4) ps -ef: 打印后台运行的所有程序
         注: ps -ef | grep henryLoop的结果是(用户, 进程id, )
            root   6209  6010  0 05:46 pts/1  00:00:00 grep henryLoop
    
            也就是说grep henryLoop也是一个进程     
            如果不想显示grep的话,输入ps -ef | grep henryLoop| grep -v grep
    (5) 消灭一个进程 : kill -9 pid
    (6) Example: httpd
         root    6110   1  0 05:33 ?      00:00:00 /usr/sbin/httpd
         apache  6115  6110  0 05:33 ?    00:00:00 /usr/sbin/httpd
         apache  6116  6110  0 05:33 ?    00:00:00 /usr/sbin/httpd
         假如kill -9 6110之后, 6115和6116进程仍旧存在,但是httpd服务已经停止
         重新启动时, 由于6115和6116 apache进程存在, 无法重启
    
         解决方法是 kill -9 $(pgrep -f http), kill所有匹配的
         但是kill之前必须ps -ef查看一下kill的进程是否是需要kill的
    (7) 查询端口号: netstat -nlp | grep 2985
          Local Address(:::80)
    (8) 几种Local Address的意义
          a) 0.0.0.0:22 或者 :::22 表示本机ip的22端口, 任意ip都可以访问
          b) 127.0.0.1:22 只能是本机才可以访问
          c)  192.168.152.122:22 能访问到该ip地址才可以访问
    (9) 查询所有rpm包: rpm -qa
    (10) rpm -e --nodeps + 包名: 移除某个包不用先移除其依赖
    
    1. 临时获得root权限
    (1) 先在/etc/sudoers中加入henry(想要获得root权限的用户)  ALL=(ALL)  ALL
          OR
         yanghenry  ALL=(root)  NOPASSWD:ALL(sudo时不需要输入密码)
         
    (2) 此时henry用户可以用sudo 获取临时root权限
    (3) 切换用户并获得root权限: sudo su - henry
    
    1. chmod 与 chown(只有这两个命令出现R)
    (1) chmod : 修改权限
        a) chmod 777  文件
        b) chmod -R 777 文件夹
    (2) chown henry:henry 文件 : 将某个文件改为henry的用户组 
    (3) 注意: 在生产上,如果某个文件属于特定的用户组,那么只有该用户组的用户才能访问该文件
    (4) 如何给一个脚本的三组权限都加上执行权限
          a) chmod -x test.sh
          b) chmod +x test.sh
    (5) 如果只关心当前用户(第一组)是否能执行test.sh
        a) chmod u+x test.sh
    (6) 如果只关心当前组用户(第二组)是否能执行test.sh
        a) chmod g+x test.sh
    (7) 如果只关心当前用户(第三组)是否能执行test.sh
        a) chmod o+x test.sh
    (8) 使用英文字母+数字形式作为机器名
    
    1. 查看ip
    (1) ifconfig : 查看网络的一些信息(包括网卡名称等)
    (2) 网卡对应的配置文件在哪个文件夹
          a)在/etc/sysconfig/network-scripts
            eg. etho的配置信息就在ifcfg-eth0文件里
    (3) 下图中inet addr就是ip
    (4) 另外查看ip的方法: 
        a) ping localhost(或者是主机名称)
        b) hostname - i
        c) 去 /etc/hosts中找, 此文件默认开头有两行如下
        127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
        ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
        注意该两行不要删除
    
    123.png
    1. 如何判断linux服务是否存活

      (1) 具体步骤: 
            a) 首先ping服务所在机器的ip: 保证保罗是畅通的
            b) 查看该服务的端口号和服务地址
               eg. 192.168.42.131:80 
            c) ping ip + 端口号: telnet 192.168.42.131 80 
      (2) 相关命令  
            a) 查看进程是否存在 : ps -ef | grep httpd 
            b) chkconfig --list 将所有服务都列出来
               httpd  0:关闭    1:关 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
               如果想要开机自启动,使用chkconfig httpd on 将httpd的2, 3, 4, 5都置为on
            c) 设置开机自启动: chkconfig 服务 on 
            d) 查看端口号: netstat -nlp | grep 4517
      
    2. 实时查看文件内容

      (1) tail -f xxx.log
      (2) tail -F xxx.log <==> tail -f + -retry
      情景:在生产上一般保留11份大小固定(比如200m)的log,某个窗口一般第一个log文件满了之后,
      会做mv xxx.log xxx1.log操作,touch xxx.log, 此前实时监控(tail -f)xxx.log的窗口无法再继续监控,但是如果使用tail -F就可以继续监控
      
    3. 命令是怎样找到的

      (1)根据linux的$PATH (必须是大写)得到命令的所在目录
         注: linux是以:来分隔
         eg. /usr/local/bin:/bin:/usr/bin:/usr/local/sbin
      (2)  从左往右用 ll + path/命令 依次寻找知道找到代表该命令的文件
      (3)  如何找到命令位置: which + 命令
      综上所述,一个新命令必须先配置$PATH
      
    4. 寻找文件的位置

      (1) 全局搜索: find / -name '*abc*': 从根目录寻找名字含有abc的文件
      (2) 从当前目录搜索: find ./ -name '*abc*'
      (3) 从指定目录搜索: find /tmp -name '*abc*'
      
    5. vi

    (1) 三种模式 
         a) 命令模式、编辑模式、尾行模式
         b) 三种模式之间的转化
             i) 命令模式与编辑模式
                ~ 命令模式按i键进入编辑模式
                ~ 编辑模式按esc键会命令模式
             ii) 命令模式与尾行模式
                 ~ 命令模式按 shift + ":" 进入尾行模式 
       
    
         c) 三种模式具体命令
              i) 命令模式:
                 ~ gg: 跳转到第一行第一个字符
                 ~  G: 跳转到最后一行的第一个字符
                 ~ shift + $: 从行首跳到行尾
                 ~ dd: 删除当前行
                 ~ dG: 删除当前行及以下所有行
                 ~ ndd: 删除光标以下的n行
            iii) 尾行模式
                ~ q!: 强制退出
                ~ wq: 保存退出
                ~ wq!: 强制保存退出(可以保存修改read only文件)
          d) 如何清除一个文件
                ~ gg + dG
                ~ cat /dev/null > henry.log
    
                不要用echo '' > henry.log, 这样还会使文件又一个空行
          注: 修改生产上面配置文件和其他同事的文件
                先cp备份一份,再进行编辑
          e)  vi 设置行号:  ":"set nu
          f)  vi取消行号:   ":"set nonu  
          g) vi 查询: ":/" + 需要匹配的字符,按空格之后相应的字符便会高亮显示,按n是下一行,N是上一行
          h) 跳转到任意一行: 在尾行模式下,首先输入set nu显示行号,然后输入行号,这时光标就会跳转到相应的行上
    
    1. 上传和下载
    (1)  上传指 : win ===> linux    rz
         下载指 : linux ===> win    sz
    注:由于日志文件较大,在linux服务器上打开耗时,传到windows之后,瞬间打开
    
    1. 查看文件大小与文件夹大小
    (1) 查看文件大小
        a) ll -h: eg. -rwxr-xr-x. h henry henry 31K 2月  31 25:78 henry.sh
        b) du -sh: eg. 32K  henry.sh
        
    (2) 查看文件夹大小
        a) du -sh 
    
    1. 系统情况命令
    (1) 查看内存: free -m(m 代表 mb)
                 free -g
                  ~ eg.  total used free shared buffers cached
                    Mem: 7893  780  7112   4      48      495
                  如果free很少,但是buffer+cache很多,说明还可以使用
    (2) 查看硬盘: df -h : 
                 ~ /boot  引导目录 
                 ~ swap   划分2G作为内存 
                 ~  /     根目录挂载点 
                 ~  /dev/shm 
    (3) 系统负载: top
                eg. 21:10:36 up  8:57, 6 users(什么时候开机,启动多长时间, 几个用户使用)
                load average: 0.53, 0.47, 0.39
                                   1min  5min  15min
                 如果数字大于10,说明机器繁忙
    
    1. 压缩解压
    (1)"zip -r henry.zip henry/* "
        将henry文件夹压缩成henry.zip
        "tar -czf henry.tar.gz henry/*"
        将henry文件夹压缩成henry.tar.gz
    (2) 解压: 
             ~ unzip henry.zip
             ~ tar -xvzf henry.tar.gz
    

    相关文章

      网友评论

          本文标题:工作中使用的linux命令

          本文链接:https://www.haomeiwen.com/subject/cwwdtqtx.html