zoukankan      html  css  js  c++  java
  • Liunx 操作命令学习记录

    常用的基本命令

    目录管理

    绝对路径、相对路径

    # 切换目录命令!
    cd 
    # 当前目录
    ./ 
    # 返回上一级
    cd .. 
    

    ls (列出目录)

     # 查看全部文件,包括隐藏文件
     -a, --all                  do not ignore entries starting with .
     # 列出所有的文件,包含文件的属性和权限,没有隐藏文件
     -l                         use a long listing format
     
     # 参数可以组合使用 例: ls -al
    

    cd 命令 切换目录

    cd 目录名(绝对路径都是以/开头,相对路径,对于当前目录)
    

    pwd 显示当前用户所在的目录

    [root@VM_0_9_centos home]# pwd
    /home
    

    mkdir 创建文件夹

    [root@VM_0_9_centos home]# mkdir ceshi
    [root@VM_0_9_centos home]# ls
    ceshi  dockerfile  docker-test-volume  mysql
    
    # 递归创建/创建多级目录 -p
    [root@VM_0_9_centos home]# mkdir -p ceshi1/ceshi2
    [root@VM_0_9_centos home]# ls
    ceshi  ceshi1  dockerfile  docker-test-volume  mysql
    [root@VM_0_9_centos home]# cd ceshi1
    [root@VM_0_9_centos ceshi1]# ls
    ceshi2
    

    rmdir 删除目录

    # 只能删除空的目录
    [root@VM_0_9_centos home]# rmdir ceshi1
    rmdir: failed to remove ‘ceshi1’: Directory not empty
    # 如果下面存在文件,需要删除文件,递归删除多个目录用 -p参数
    [root@VM_0_9_centos home]# rmdir -p ceshi1/ceshi2
    [root@VM_0_9_centos home]# ls
    ceshi  dockerfile  docker-test-volume  mysql
    
    

    cp (复制文件或者目录)

    # cp 原来的目录 新的目录
    [root@VM_0_9_centos home]# ls
    ceshi  ceshi1  dockerfile  docker-test-volume  mysql
    [root@VM_0_9_centos home]# cd ceshi
    [root@VM_0_9_centos ceshi]# ls
    test1.java  test.java
    [root@VM_0_9_centos ceshi]# cp test.java ../ceshi1
    [root@VM_0_9_centos ceshi]# cd ..
    [root@VM_0_9_centos home]# cd ceshi1
    [root@VM_0_9_centos ceshi1]# ls
    test.java
    
    # 文件重复 拷贝会询问是否覆盖,与windows是一样的
    [root@VM_0_9_centos ceshi]# cp test.java ../ceshi1
    cp: overwrite ‘../ceshi1/test.java’? y
    

    rm (移除文件或者目录!)

    # -f 忽略不存在的文件,不会出现警告,强制删除
    # -r 递归删除目录
    # -i 互动,删除询问是否删除
    
    
    [root@VM_0_9_centos ceshi1]# rm -rf test.java
    [root@VM_0_9_centos ceshi1]# ls
    [root@VM_0_9_centos ceshi1]# 
    
    

    rm -rf / 系统中所有的文件都会被删除,且不会提示,这个命令很危险!!!!!

    rm -rf / 系统中所有的文件都会被删除,且不会提示,这个命令很危险!!!!!

    rm -rf / 系统中所有的文件都会被删除,且不会提示,这个命令很危险!!!!!

    rm -rf / 系统中所有的文件都会被删除,且不会提示,这个命令很危险!!!!!

    rm -rf / 系统中所有的文件都会被删除,且不会提示,这个命令很危险!!!!!

    mv 移动文件或者

    # -f 强制
    # -u 只替换已经更新过的文件
    
    # 移动文件
    [root@VM_0_9_centos ceshi]# ls
    test1.java  test.java
    [root@VM_0_9_centos ceshi]# mv test.java ../ceshi1
    [root@VM_0_9_centos ceshi]# ls
    test1.java
    [root@VM_0_9_centos ceshi]# cd ../ceshi1
    [root@VM_0_9_centos ceshi1]# ls
    test.java
    
    #重命名文件夹
    [root@VM_0_9_centos home]# mv ceshi1 ceshi2
    [root@VM_0_9_centos home]# ls
    ceshi  ceshi2
    

    基本属性

    看懂文件属性

    Linux 系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限.为了保护系统的安全性,Linux系统对不同用户访问同一问价(包括目录文件)的权限做了不同的规定.

    在Linux中我们可以使用ll 或者ls -l命令来显示一个文件的属性以及文件所属的用户和组,如:

    [root@VM_0_9_centos /]# ll
    total 84
    -rw-r--r--   1 root root    93 Jul 17  2020 backup.db
    lrwxrwxrwx.  1 root root     7 Mar  7  2019 bin -> usr/bin
    dr-xr-xr-x.  5 root root  4096 Jul 17  2020 boot
    drwxr-xr-x   2 root root  4096 Nov  5  2019 data
    drwxr-xr-x  19 root root  2980 Jul  8  2020 dev
    drwxr-xr-x. 93 root root 12288 Jun  2 11:49 etc
    drwxr-xr-x.  7 root root  4096 Jun 11 09:26 home
    lrwxrwxrwx.  1 root root     7 Mar  7  2019 lib -> usr/lib
    lrwxrwxrwx.  1 root root     9 Mar  7  2019 lib64 -> usr/lib64
    drwx------.  2 root root 16384 Mar  7  2019 lost+found
    drwxr-xr-x.  2 root root  4096 Apr 11  2018 media
    drwxr-xr-x.  2 root root  4096 Apr 11  2018 mnt
    drwxr-xr-x   3 root root  4096 Jun  9 18:08 mydata
    drwxr-xr-x   2 root root  4096 Aug 20  2020 nmon
    drwxr-xr-x.  4 root root  4096 Jun  2 11:49 opt
    dr-xr-xr-x  87 root root     0 Jul  8  2020 proc
    dr-xr-x---.  9 root root  4096 Jun  8 11:52 root
    drwxr-xr-x  30 root root  1000 Jun  7 11:16 run
    lrwxrwxrwx.  1 root root     8 Mar  7  2019 sbin -> usr/sbin
    drwxr-xr-x.  2 root root  4096 Apr 11  2018 srv
    dr-xr-xr-x  13 root root     0 Jun  7 10:45 sys
    drwxrwxrwt.  9 root root  4096 Jun 11 09:25 tmp
    drwxr-xr-x. 13 root root  4096 Mar  7  2019 usr
    drwxr-xr-x. 19 root root  4096 Apr 22  2020 var
    

    实例中,boot文件的第一个属性用"d"表示."d"在Linux中代表该文件是一个目录文件

    在Linux中第一个字符代表这个文件是目录、文件或链接文件等等:

    • 当为[d]则是目录 目录文件
    • 当为[-]则是文件 普通文件
    • 若是[l]则表示为链接文档(link file) 符号链接文件
    • 若是[b]则表示为装置文件里面的可供存储的接口设备(可随机存取装置) 块设备文件
    • 若是[c]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置) 字符设备文件

    接下来的字符中,以三个为一组,且均为【rwx】的三个参数的组合.

    其中,[r]代表可读(read)、[w]代表可写(write)、[x]代表可执行(execute)

    要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[-]而已

    每个文件的属性由左边第一部分的10个字符来确定

    图片

    从左至右用0-9这些数字来表示.

    第0位确定文件类型,

    第1-3位确定属主(该文件的所有者)拥有该文件的权限.

    第4-6位确定属组(所有者的同组用户)拥有该文件的权限,

    第7-9位确定其他用户拥有该文件的权限

    其中:

    第1、4、7位表示读权限,如果用“r”字符表示,则有读权限,如果用“-”字符表示,则没有读权限;

    第2、5、8位表示写权限,如果用“w"字符表示,则有写权限,如果用”-“字符,则表示没有写权限;

    第3、6、9位表示,如果用"x"字符表示,则有执行权限,如果用"-"字符表示,则没有执行权限;

    对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户

    同时,在linux中,用户是按组分类的,一个用户属于一个或多个组

    文件所有者以外的用户又可以为文件所有者的同组用户和其他用户.

    因此,Linux系统按照文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限

    在以上实例中,boot文件是一个目录文件,属主和数组都为root

    修改文件属性

    1 . chgrp : 更改文件属组

    chgrp [-R] 属组名 文件名
    

    -R: 递归更改文件属组,就是在更改某个目录的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改.

    2. chgrp : 更改文件属主,也可以同时更改文件属组

    chown [-R] 属主名 文件名
    chown [-R] 属主名: 属组名 文件名
    

    3. chmod: 更改文件9个属性(掌握)

    chmod [-R] xyz 文件或目录
    

    Linux文件属性有两种设置方法,一种是数字,一种是符号

    Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限

    先复习一下刚刚上面提到的数据:文件的权限字符为[-rwxrwxrwx],这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:

    r:4   w:2  x:1
    

    每种身份(owner/group/others)各自的权限(r/w/x)分数是需要累加的,例如当权限为:[-rwxrwx---]分数则是

    • owner = rwx = 4+2+1 =7
    • group=rwx = 4+2+1 =7
    • others= --- =0+0+0 =0
    chmod 770 filename
    

    文件内容查看

    Linux系统中是使用以下命令来查看文件的内容:

    • cat 由第一行开始显文件内容

      [root@VM_0_9_centos network-scripts]# cat ifcfg-eth0 
      # Created by cloud-init on instance boot automatically, do not edit.
      #
      BOOTPROTO=dhcp
      DEVICE=eth0
      HWADDR=52:54:00:de:11:64
      ONBOOT=yes
      PERSISTENT_DHCLIENT=yes
      TYPE=Ethernet
      USERCTL=no
      
    • tac 从最后一行开始显示,可以看出tac是cat的倒着写

      [root@VM_0_9_centos network-scripts]# tac ifcfg-eth0
      USERCTL=no
      TYPE=Ethernet
      PERSISTENT_DHCLIENT=yes
      ONBOOT=yes
      HWADDR=52:54:00:de:11:64
      DEVICE=eth0
      BOOTPROTO=dhcp
      
    • nl 显示的时候,顺道输出行号

      [root@VM_0_9_centos network-scripts]# nl ifcfg-eth0
           1  # Created by cloud-init on instance boot automatically, do not edit.
           2  #
           3  BOOTPROTO=dhcp
           4  DEVICE=eth0
           5  HWADDR=52:54:00:de:11:64
           6  ONBOOT=yes
           7  PERSISTENT_DHCLIENT=yes
           8  TYPE=Ethernet
           9  USERCTL=no
      
    • more 一页一页 的显示文件内容 (空格下一页 enter下一行)

      [root@VM_0_9_centos etc]# more csh.login
      # /etc/csh.login
      
      # System wide environment and startup programs, for login setup
      
      if ( ! ${?PATH} ) then
              if ( $uid == 0 ) then
          
                      setenv PATH "/usr/local/sbin:/usr/sbin:/usr/local/bin:/usr/bin"
              else
                      setenv PATH "/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin"
              endif
      else
              #add sbin directories to the path
              foreach p ( /usr/local/sbin /usr/sbin )
                      switch (":${PATH}:")
                      case "*:${p}:*":
                              breaksw
                      default:
      --More--(39%)
      
    • less 与 more类似,但是比more更好的是,他可以往前翻页(空格翻页,退出q命令,查找字符串/要查询向下查询,向上查询使用?要查询的字符串 n继续搜寻下一个,N 向上寻找)

      [root@VM_0_9_centos etc]# less csh.login
      # /etc/csh.login
      
      # System wide environment and startup programs, for login setup
      
      if ( ! ${?PATH} ) then
              if ( $uid == 0 ) then
                      setenv PATH "/usr/local/sbin:/usr/sbin:/usr/local/bin:/usr/bin"
              else
                      setenv PATH "/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin"
              endif
      else
      
    • head 只看头几行

      [root@VM_0_9_centos etc]# head csh.login
      # /etc/csh.login
      
      # System wide environment and startup programs, for login setup
      
      if ( ! ${?PATH} ) then
              if ( $uid == 0 ) then
                      setenv PATH  "/usr/local/sbin:/usr/sbin:/usr/local/bin:/usr/bin"
              else
                      setenv PATH  "/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin"
              endif
      
    • tail 只看尾巴几行 (-n 行数)

      [root@VM_0_9_centos etc]# tail csh.login
                      if ( -r "$i" ) then
                                      if ($?prompt) then
                                            source "$i"
                                      else
                                            source "$i" >& /dev/null
                                      endif
                      endif
              end
              unset i nonomatch
      endif
      

    你可以使用man[命名]来查看各个命令的使用文档,如: man cp

    ifconfig 查看网络配置> 拓展: Linux 链接概念

    Linux的链接分为两种:硬链接 软连接

    硬链接: A---B,假设B是A的硬链接,那么他们两个指向了同一个文件!,允许一个文件拥有多个路径,用户可以通过这种机制建立硬链接到一些重要文件上,防止误删!

    软链接: 类似window的快捷方式,删除的源文件,快捷方式也无法访问

    # 硬链接
    [root@VM_0_9_centos ceshi]# ln test test1  
    # 软链接(符号链接)
    [root@VM_0_9_centos ceshi]# ln -s test test2
    [root@VM_0_9_centos ceshi]# ls -ll
    total 0
    -rw-r--r-- 2 root root 0 Jun 15 10:18 test
    -rw-r--r-- 2 root root 0 Jun 15 10:18 test1
    -rw-r--r-- 1 root root 0 Jun  4 10:47 test1.java
    lrwxrwxrwx 1 root root 4 Jun 15 10:19 test2 -> test
    [root@VM_0_9_centos ceshi]# echo "hello world" >> test
    [root@VM_0_9_centos ceshi]# cat test
    hello world
    [root@VM_0_9_centos ceshi]# cat test1
    hello world
    [root@VM_0_9_centos ceshi]# cat test2
    hello world
    # 删除源文件
    [root@VM_0_9_centos ceshi]# rm -rf test
    [root@VM_0_9_centos ceshi]# ls
    test1  test1.java  test2
    [root@VM_0_9_centos ceshi]# cat test1
    hello world
    # 软链接已经失效
    [root@VM_0_9_centos ceshi]# cat test2
    cat: test2: No such file or directory
    

    创建 ln命令

    touch 创建文件命令

    echo 输入字符串

    vim 编辑器

    三种使用模式

    基本上vi/vim共分为三种模式,分别是命令模式(Command mode),输入模式(insert mode)底线命令模式(Last line mode). 这三种模式的作用分别是:

    命令模式:

    用户刚刚启动vi/vim,便进入了命令模式.

    此状态下敲击键盘动作会被vim识别为命令,而非输入字符串,比如我们此时按下i,并不会输入一个字符,i被当做了一个命令.

    以下是常用的几个命令:

    • i 切换到输入模式,以输入字符
    • x删除当前光标所在处的字符
    • : 切换到底线命令模式,以在最低一行输入命令

    若想要编辑文本,启动vim.进入命令模式,按下i,切换到输入模式

    命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令

    输入模式

    在命令模式按下i进入输入模式

    在输入模式中,可以使用一下按键:

    • 字符按键以及shift组合,输入字符
    • ENTER,回车键,换行
    • BACK SPACE 退格键,删除光标前一个字符
    • DEL 删除键,删除光标后一个字符
    • 方向键 在文本中移动光标
    • HOME/END 移动光标到行首/行尾
    • page Up/page Down 上/下翻页
    • insert 切换光标为输入/替换模式,光标将变成竖线/下划线
    • ESC 退出输入模式,切换到命令模式

    底线命令模式

    在命令模式下按下: (英文冒号)就进入了底线命令模式

    底线命令模式可以输入单个或多个字符的命令,可用的命令非常多

    在底线命令模式中,基本的命令有(已经省略了:)

    • q 退出程序
    • w 保存文件

    按esc可随时退出底线命令模式

    第一部分:一般模式可用的光标移动、复制粘贴、搜索替换等

    移动光标的方法
    h 或 向左箭头键(←) 光标向左移动一个字符
    j 或 向下箭头键(↓) 光标向下移动一个字符
    k 或 向上箭头键(↑) 光标向上移动一个字符
    l 或 向右箭头键(→) 光标向右移动一个字符
    [Ctrl] + [f] 屏幕『向下』移动一页,相当于 [Page Down]按键 (常用)
    [Ctrl] + [b] 屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用)
    [Ctrl] + [d] 屏幕『向下』移动半页
    [Ctrl] + [u] 屏幕『向上』移动半页
    + 光标移动到非空格符的下一行
    - 光标移动到非空格符的上一行
    n< space> 那个 n 表示『数字』,例如 20 。按下数字后再按空格键,光标会向右移动这一行的 n 个字符。
    0 或功能键[Home] 这是数字『 0 』:移动到这一行的最前面字符处 (常用)
    $ 或功能键[End] 移动到这一行的最后面字符处(常用)
    H 光标移动到这个屏幕的最上方那一行的第一个字符
    M 光标移动到这个屏幕的中央那一行的第一个字符
    L 光标移动到这个屏幕的最下方那一行的第一个字符
    G 移动到这个档案的最后一行(常用)
    nG n 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行(可配合 :set nu)
    gg 移动到这个档案的第一行,相当于 1G 啊!(常用)
    n< Enter> n 为数字。光标向下移动 n 行(常用)
    搜索替换
    /word 向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可!(常用)
    ?word 向光标之上寻找一个字符串名称为 word 的字符串。
    n 这个 n 是英文按键。代表重复前一个搜寻的动作。举例来说, 如果刚刚我们执行 /vbird 去向下搜寻 vbird 这个字符串,则按下 n 后,会向下继续搜寻下一个名称为 vbird 的字符串。如果是执行 ?vbird 的话,那么按下 n 则会向上继续搜寻名称为 vbird 的字符串!
    N 这个 N 是英文按键。与 n 刚好相反,为『反向』进行前一个搜寻动作。例如 /vbird 后,按下 N 则表示『向上』搜寻 vbird 。
    删除、复制与粘贴
    x, X 在一行字当中,x 为向后删除一个字符 (相当于 [del] 按键), X 为向前删除一个字符(相当于 [backspace] 亦即是退格键) (常用)
    nx n 为数字,连续向后删除 n 个字符。举例来说,我要连续删除 10 个字符, 『10x』。
    dd 删除游标所在的那一整行(常用)
    ndd n 为数字。删除光标所在的向下 n 行,例如 20dd 则是删除 20 行 (常用)
    d1G 删除光标所在到第一行的所有数据
    dG 删除光标所在到最后一行的所有数据
    d$ 删除游标所在处,到该行的最后一个字符
    d0 那个是数字的 0 ,删除游标所在处,到该行的最前面一个字符
    yy 复制游标所在的那一行(常用)
    nyy n 为数字。复制光标所在的向下 n 行,例如 20yy 则是复制 20 行(常用)
    y1G 复制游标所在行到第一行的所有数据
    yG 复制游标所在行到最后一行的所有数据
    y0 复制光标所在的那个字符到该行行首的所有数据
    y$ 复制光标所在的那个字符到该行行尾的所有数据
    p, P p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行!举例来说,我目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后, 那 10 行数据会贴在原本的 20 行之后,亦即由 21 行开始贴。但如果是按下 P 呢?那么原本的第 20 行会被推到变成 30 行。(常用)
    J 将光标所在行与下一行的数据结合成同一行
    c 重复删除多个数据,例如向下删除 10 行,[ 10cj ]
    u 复原前一个动作。(常用)
    [Ctrl]+r 重做上一个动作。(常用)

    第二部分:一般模式切换到编辑模式的可用的按钮说明

    进入输入或取代的编辑模式
    i, I 进入输入模式(Insert mode):i 为『从目前光标所在处输入』, I 为『在目前所在行的第一个非空格符处开始输入』。(常用)
    a, A 进入输入模式(Insert mode):a 为『从目前光标所在的下一个字符处开始输入』, A 为『从光标所在行的最后一个字符处开始输入』。(常用)
    o, O 进入输入模式(Insert mode):这是英文字母 o 的大小写。o 为『在目前光标所在的下一行处输入新的一行』;O 为在目前光标所在处的上一行输入新的一行!(常用)
    r, R 进入取代模式(Replace mode):r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止;(常用)
    [Esc] 退出编辑模式,回到一般模式中(常用)

    第三部分:一般模式切换到指令行模式的可用的按钮说明

    指令行的储存、离开等指令
    :w! 若文件属性为『只读』时,强制写入该档案。不过,到底能不能写入, 还是跟你对该档案的档案权限有关啊!
    :q 离开 vi (常用)
    :q! 若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。
    注意一下啊,那个惊叹号 (!) 在 vi 当中,常常具有『强制』的意思~
    :wq 储存后离开,若为 :wq! 则为强制储存后离开 (常用)
    ZZ 这是大写的 Z 喔!若档案没有更动,则不储存离开,若档案已经被更动过,则储存后离开!
    :w [filename] 将编辑的数据储存成另一个档案(类似另存新档)
    :r [filename] 在编辑的数据中,读入另一个档案的数据。亦即将 『filename』 这个档案内容加到游标所在行后面
    :n1,n2 w [filename] 将 n1 到 n2 的内容储存成 filename 这个档案。
    :! command 暂时离开 vi 到指令行模式下执行 command 的显示结果!例如 『:! ls /home』即可在 vi 当中看 /home 底下以 ls 输出的档案信息!
    :set nu 显示行号,设定之后,会在每一行的前缀显示该行的行号
    :set nonu 与 set nu 相反,为取消行号!

    账号管理

    简介

    Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

    用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。

    每个用户账号都拥有一个唯一的用户名和各自的口令。

    用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。

    实现用户账号的管理,要完成的工作主要有如下几个方面:

    • 用户账号的添加、删除与修改。
    • 用户口令的管理。
    • 用户组的管理。

    用户账号的管理

    用户账号的管理工作主要涉及到用户账号的添加、修改和删除。

    添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源。

    添加账号 useradd

    useradd -选项 用户名
    

    参数说明:

    • 选项 :

      • -c comment 指定一段注释性描述。
      • -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
      • -g 用户组 指定用户所属的用户组。
      • -G 用户组,用户组 指定用户所属的附加组。
      • -m 使用者目录如不存在则自动建立。
      • -s Shell文件 指定用户的登录Shell。
      • -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
    • 用户名 :

      • 指定新账号的登录名。

    测试:

    [root@VM_0_9_centos ~]# useradd -m zhonglao
    [root@VM_0_9_centos ~]# cd /home/
    [root@VM_0_9_centos home]# ls
    dockerfile  docker-test-volume  mysql  zhonglao
    

    本质:Linux中一切皆文件,这里的添加用户说白了就是往某一个文件中写入用户的信息了! 可以查看配置 /etc/passwd

    删除用户 userdel

    userdel -r zhonglao
    # 删除用户,并将他的目录也一并删除
    [root@VM_0_9_centos home]# userdel -r zhonglao
    [root@VM_0_9_centos home]# ls
    dockerfile  docker-test-volume  mysql
    

    修改用户 usermod

    修改的其他选项,与新增一致

    usermod -d /home/233 zhonglao
    
    
    [root@VM_0_9_centos home]# useradd -m zhonglao
    [root@VM_0_9_centos home]# usermod -d /home/233 zhonglao
    [root@VM_0_9_centos home]# ls
    dockerfile  docker-test-volume  mysql  zhonglao
    [root@VM_0_9_centos home]# cat /etc/passwd
     //......
    zhonglao:x:1001:1001::/home/233:/bin/bash
    

    切换用户

    root用户

    1.切换用户的命令为:su username [username是你的用户名]

    2.从普通用户切换到root用户,还可以使用命令: sudo su

    3.在中断输入exit和logout或使用快捷方式ctrl+d,可以退回到原来用户,其实ctrl+d也是执行的exit命令

    4.在切换用户时,如果想在切换用户之后使用新用户的工作环境,可以在su和username之间加-,例如:[su-root]

    $表示普通用户

    表示超级用户,也就是root用户

    注意 如果出现

    # 这样的情况
    [root@VM_0_9_centos home]# su zhonglao
    bash-4.2$ 
    
    # 可以先查看 用户的目录情况
    [root@VM_0_9_centos home]# cat /etc/passwd
    //..........
    zhonglao:x:1001:1001::/home/233:/bin/bash
    
    # 改回之前的目录或者创建
    [root@VM_0_9_centos home]# usermod -d /home/zhonglao zhonglao
    //...
    zhonglao:x:1001:1001::/home/zhonglao:/bin/bash
    # 再次切换
    [root@VM_0_9_centos home]# su zhonglao
    [zhonglao@VM_0_9_centos home]$ 
    
    # 查看主机名
    [root@VM_0_9_centos home]# hostname
    # 修改主机名
    [root@VM_0_9_centos home]# hostname rootzl
    # 重新登录 主机名就会变了  重启电脑之后就会消失
    [root@rootzl ~]# 
    

    用户的密码设置

    给用户设置密码,用户就可以登录了,liunx密码是不会显示的

    超级用户可以改任何用户指定密码

    # passwd username
    [root@rootzl ~]# passwd zhonglao
    Changing password for user zhonglao.
    New password: 
    BAD PASSWORD: The password is shorter than 8 characters
    Retype new password: 
    passwd: all authentication tokens updated successfully.
    

    如果是普通用户

    passwd
    (current) UNIX password:
    new password:
    re password
    

    锁定账户

    passwd -l zhonglao # 锁定之后这个用户就不能登录了
    passwd -d zhonglao # 没有密码也不能登录
    

    用户组管理

    属主 属组

    每个用户都有一个用户组,系统可以对一个用户组中的所用用户进行集中管理(开发 测试 运维 root),不同的Liunx系统对用户组的规定有所不同,如Linux下的用户属于与他同名的用户组,这个用户组在创建用户时间时创建

    用户组的管理设计用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新

    创建用户组

    [root@rootzl ~]# groupadd zld
    [root@rootzl ~]# cat /etc/group
    //...
    docker:x:990:
    zhonglao:x:1001:
    zld:x:1002:
    

    创建完用户组可以得到一个组的id,这个id是可以指定的(-g 520),如果不指定就是自增的

    删除用户组

    [root@rootzl ~]# groupdel zld
    

    修改用户组的权限信息和名字

    [root@rootzl ~]# groupmod -g 520 -n newzld zld
    

    用户切换用户组

    # 登录当前用户 zhonglao
    $ newgrp root
    

    拓展:文件的查看

    /etc/passwd

    用户名:口令(登录密码,我们不可见):用户标识号:组标识号:注释性描述:主目录:登录shell
    

    这个文件中的每一行都代表一个用户,我们可以从这里看出这个用户目录在哪里,属于那个组

    登录口令:把真正的加密后的用户口令存放到/etc/shadow文件中,保证我们密码的安全性!

    磁盘管理

    df (列出文件系统整体的磁盘使用量) du(检查磁盘控件使用量)

    
    # df
    [root@rootzl ~]# df
    Filesystem     1K-blocks     Used Available Use% Mounted on
    devtmpfs          930108        0    930108   0% /dev
    tmpfs             941028        0    941028   0% /dev/shm
    tmpfs             941028      660    940368   1% /run
    tmpfs             941028        0    941028   0% /sys/fs/cgroup
    /dev/vda1       51473868 12787188  36489436  26% /
    tmpfs             188208        0    188208   0% /run/user/0
    # -h 把字节转换成 M
    [root@rootzl ~]# df -h
    Filesystem      Size  Used Avail Use% Mounted on
    devtmpfs        909M     0  909M   0% /dev
    tmpfs           919M     0  919M   0% /dev/shm
    tmpfs           919M  660K  919M   1% /run
    tmpfs           919M     0  919M   0% /sys/fs/cgroup
    /dev/vda1        50G   13G   35G  26% /
    tmpfs           184M     0  184M   0% /run/user/0
    
    
    # du
    [root@rootzl ~]# du
    8       ./.cache/abrt
    12      ./.cache
    8       ./.pip
    8       ./.docker
    8       ./.ssh
    4       ./.pki/nssdb
    8       ./.pki
    4       ./.config/abrt
    8       ./.config
    ......
    # 包括隐藏文件
    [root@rootzl ~]# du -a
    
    # 检查根目录下每个目录所占用的容量
    [root@rootzl ~]# du -sm /*
    

    Mac或者想使用Linux挂载我们的一些本地磁盘或者文件

    挂载: mount 将 外部设备 挂载到mnt下进行 访问

    [root@rootzl /]# ls
    backup.db  boot  dev  home  lib64       media  mydata  opt   root  sbin  sys  usr
    bin        data  etc  lib   lost+found  mnt    nmon    proc  run   srv   tmp  var
    [root@rootzl /]# mount /dev/zhonglao /mnt/zhonglao
    

    卸载: umount -f [挂载位置] 强制卸载

    进程管理

    什么是进程

    1.在Linux中,每个程序都是有自己的一个进程,每个进程都有一个id号

    2.每个进程,都有一个父进程

    3.进程可以有两种存在方式:前台!后台运行!

    4.一般的话服务都是后台运行的,基本的程序都是前后台运行的

    命令

    ps 查看当前系统中正在执行的各种进程的信息!

    ps -xx:

    • -a 显示当前终端运行的所有的进程信息
    • -u 以用户的信息显示进程
    • -x 显示后台运行进程的参数
    # ps -aux| 查看所有的进程
    ps -aux|grep mysql
    
    # | 在Linux这个叫管道符 A|B
    # grep 查找文件中符合条件的字符串
    
    [root@rootzl ~]# ps -aux|grep mysql
    root     10961  0.0  0.0 112812   968 pts/0    S+   15:02   0:00 grep --color=auto mysql
    root     19804  0.0  0.0  11820   704 ?        S    Mar20   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --user=root --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/mysql.pid
    root     20083  0.2 20.6 1368472 388128 ?      Sl   Mar20 323:11 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=root --log-error=/var/log/mariadb/mariadb.log --pid-file=/usr/local/mysql/data/mysql.pid --socket=/tmp/mysql.sock --port=5186
    

    ps -ef:可以查看到父进程的信息

    ps -ef|grep mysql # 看父进程 我们一般可以通过目录结构查看
    
    # 进程树
    pstree -pu 
    	-p 显示父id
    	-u 显示用户组
    

    结束进程:杀掉进程,等价于window结束任务

    # 强制结束进程
    kill-9 进程的id 
    
  • 相关阅读:
    项目计划进度控制与资源管理
    读大道至简所思
    Java自学第三十二天
    Java自学第三十一天
    Java自学第三十天
    Java自学第二十九天
    Java自学第二十八天
    Java自学第二十七天
    Java自学第二十六天
    Java自学第二十五天
  • 原文地址:https://www.cnblogs.com/HHbJ/p/14931745.html
Copyright © 2011-2022 走看看