当前位置: 首页 > news >正文

Linux简单介绍(1)

一、Linux简介与安装

1.1 计算机的相关概念

1. 什么是计算机?
     能够接收使用者输入的指令与数据,经由中央处理器的算术与逻辑单元运算处理后,以产生或存储有用的新数据。比如计算器,手机,汽车导航系统,提款机,桌面电脑,手提电脑等。
2. 计算机的硬件组成
    计算单元和控制单元(CPU)
    输入单元(键盘,鼠标)
    输出单元(显示器,打印机)
    存储单元(硬盘,u盘,内存条)
3. 操作系统
            用来管理计算机硬件和其他软件的计算机程序,没有操作系统的计算机,就是一堆废铁。
    常见的PC端操作系统:windows,linux,mac
    常见的移动端操作系统:鸿蒙系统(大力支持),ios,Android等
4. 文件系统
    用来管理文件(数据)的软件程序。
    通常其组织结构都是树形结构

1.2 Linux的简介

 1. 简介
    - 是一款免费的,开源的类Unix操作系统,支持多用户,多任务,多线程,多cpu
    - 支持32位和64位
    - Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
    - Linux也继承了Unix的文件设计思想,一切皆文件(文件夹也是文件)
    - Linux之父是“托瓦斯林纳斯”
2. 版本说明:
    Linux由于是开源的,所以有很多公司在Linux内核程序基础上开发了自己的有特别功能的程序(工具),然后,再命令为一个新的版本,因此Linux有众多的版本型号。
    总结:严格来讲,Linux操作系统指的是“linux内核+各种软件”.
    常见的Linux版本:
         Red Hat系列:
                 其中就有RedHat,CentOS
         Debin系列
                其中就有Debin,Ubuntu
3.  CentOS社区版介绍
     CentOS官网:http://www.centos.org/
     CentOS搜狐镜像:http://mirrors.sohu.com/centos/
     CentOS网易镜像:http://mirrors.163.com/centos/
     CentOS阿里镜像:https://mirrors.aliyun.com/centos/
     
     CentOS 是RedHat的社区版本,功能和RedHat基本一样
4. 用途:
   Linux企业服务器  
   嵌入式系统:Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、智能家电等嵌入式系统。
   电影娱乐行业:电影后期特效处理。

1.3 VMware的安装

1. VMware的简介
    是一款虚拟化工具。可以帮助用户来模拟计算机硬件,比如模拟计算机的内存条,磁盘,cpu,输入和输出设备。然后这些硬件模拟出来后,用户就可以在这个基础上安装OS。
2. vmware的安装
   安装vmware16. 双击,点击下一步即可。
   注意:如果安装成功,那么在物理机的网络适配器里,应该会多出两个VMware NetWork Adapter。
   一个是VMnet1,
   一个是VMnet8.
   破解:百度上搜VMware16激活码。
 注意:如果想要在vmware中安装OS,那么物理机的BIOS必须开启虚拟化支持。

1.4 Linux的安装

 1. 第一大步:使用vmware先虚拟化一台硬件机器
   文件-->新建虚拟机-->典型-->稍后安装操作系统
   -->选择Linux,并选择CentOS 7 64位
   -->  虚拟机名称: test01
        位置:最好改成其他盘符
   --> 磁盘大小: 50G,    hadoop之后一定要50G以上
       单个文件和多个文件,哪一个都行。
   -->自定义硬件
          内存:2G
          处理器: 1个cpu,2个核
          新CD/DVD:  指定要安装的OS的映像文件
          删除声卡和打印机, 确定即可     最终完成
          
        ---------------------到此为止,硬件模拟完成----------------------  
2. 安装OS
    开启此虚拟机-->选择install centos......
    -->简体中文
    -->设置分区:自动或者自定义
         自定义:  +键
             /boot     300M
             /swap(磁盘交换空间)  1024M
             /          剩下的全部给根
             
             接受更改
    --> 安装
    --> 安装期间设置root的密码或者是新用户
           超级管理员:root
           密码:123456  
    -->  重新加载
    -->  成功启动了,开心的玩吧。

二、Linux的基础命令(重要)

2.1 命令格式的说明

1. 进入命令行界面的提示符解析
   [root@localhost ~]#
   root位置:  登录用户名
   @: 连接符号
   localhost位置:  本机的主机名 
   ~位置:   当前的所在位置
   #位置:  表示是超级管理员还是普通用户
           超级管理员则使用#
           普通用户则使用$
    
   eg: 如果登录名为scott,主机名为linux01, 当前位置为/home/soft/tencent/wechat/
       那么提示符的样子:
       [scott@linux01 wechat]$ 
2. 命令格式的说明(格式标明时的中括号一般情况下都表示可有可无) 
    格式如下:      
     [scott@linux01 wechat]$   command [-option][...] [参数]
    eg: ls  -la  /usr

    说明:    
        - 大部分命令遵从该格式
        - 多个选项时,可以一起写   
            eg: ls –l –a  ls –la
        - 简化选项与完整选项(注:并非所有选项都可使用完整选项)     
            eg: ls –all   ls –a

2.2 三个最常用的指令

 1. pwd :  print current work directory三个单词的简写
          作用就是以绝对路径的形式显示当前的位置所在
          eg:
          [root@localhost network-scripts]# pwd
          /etc/sysconfig/network-scripts
          [root@localhost ~]# pwd
          /root
2. ls :   list directory contents的简写
          作用,就是列出指定目录下的内容(文件,子目录等)
          eg:  ls   默认列出当前工作空间里的内容
          
          常用的选项:  
              -l :  列出每个子文件的属性详情     
            -a :  显示所有的内容,包括隐藏的
            -S :  以大小进行降序排序显示, 尽量与-h,-l一起使用
            -h:   以方便人类可读的显示效果显示大小的单位,比如k,MB,G
         eg:  ls -l 显示属性详情,  可以简化写: ll
         eg:  ls -a 显示所有包括隐藏的内容
         eg:  ls -l -a 显示所有包括隐藏的内容的属性详情   ,简化写:ll -a  或者ls -la
         eg:  ls -lhS  显示当前目录下的所有内容,并降序排序
         eg:  ls -lhS /etc  显示指定目录/etc下的所有内容,并降序排序
             
3. cd :  change directory的简写,  切换工作空间
         注意:是一个特殊指令,特殊在是一个shell内置指令。
         cd  [target directory]
         eg:cd       回家
         eg:cd ~     回家
         eg:cd -    回到上一次的位置
         eg:cd /etc   切换到/etc下
         eg:cd ..   回到上一级目录(父目录)

                 cd .  表示不动

 扩展1:属性详情

【-rw-------】     【1】  【root】 【root】 【1259】 【11月 29 19:03】 【anaconda-ks.cfg】
文件类型+权限    硬链接数  owner  group   文件大小  最后一次访问时间   文件名

 扩展2:绝对和相对路径

在计算机中,路径有两种写法,分别是绝对路径和相对路径

-- 绝对路径:  从根开始书写的路径。  Linux的根的写法,就是一个斜杠  /  
             eg:  /home/scott/app/tencent/qq/bin/qq.sh
-- 相对路径:  从当前目录下开始书写的路径。
          
          .   :   当前目录的表示方式    注意: 书写相对路径时,当前目录可以省略不写
          ..  :   上一级目录的表示方式
          
          eg:  假如工作空间位于:/home/scott/app/tencent/qq/bin/目录下
               
               问题1:  切换到app目录下
                       绝对路径的写法: cd /home/scott/app/
                       相对路径的写法: cd ./../../../
                                      cd ../../../
                                      
               问题2:  切换到/home/michael/app/目录下
                       绝对路径的写法: cd /home/michael/app
                       相对路径的写法: cd ../../../../../michael/app/


         小贴士:  如果不涉及移动操作,那么绝对路径书写起来简单。
                  如果涉及到项目移动,项目部署,则应该使用相对路径 

2.3 帮助指令

 man指令

作用:查看指定命令的帮助文档
语法: man  指令
eg:   man ls
      man pwd
      man cd

help指令

作用:查看指定命令的主题信息
语法:  help  指令

注意: 不是所有的指令都有主题信息

info指令    

作用:用来查看指令命令的详细信息
语法: info 指令 

2.4 文件处理指令

2.4.1 touch

作用:用于创建一个空文件
语法: touch  filename.....
eg:  
[root@localhost etc]# touch file1 file2 file3
[root@localhost etc]# pwd
/etc
[root@localhost etc]# touch ~/file4
[root@localhost etc]# touch ~/{file5,file6}
[root@localhost etc]# ls ~
anaconda-ks.cfg  file1  file2  file3  file4  file5  file6

2.4.2 mkdir

作用:用于创一个目录
语法:mkdir [-p]  dirname.....

[root@localhost ~]# mkdir dir1
[root@localhost ~]# mkdir ./dir2 ./dir3
[root@localhost ~]# cd /etc
[root@localhost etc]# mkdir ~/{dir4,dir5}
[root@localhost etc]# mkdir ~/dir6/dir66       #会报错,因为dir6不存在,所以不能创建dir66
[root@localhost etc]# mkdir -p ~/dir6/dir66    #表示多层级创建目录
[root@localhost etc]# ls -l ~
总用量 4
-rw-------. 1 root root 1259 11月 29 19:03 anaconda-ks.cfg
drwxr-xr-x. 2 root root    6 11月 29 22:32 dir1
drwxr-xr-x. 2 root root    6 11月 29 22:33 dir2
drwxr-xr-x. 2 root root    6 11月 29 22:33 dir3
drwxr-xr-x. 2 root root    6 11月 29 22:33 dir4
drwxr-xr-x. 2 root root    6 11月 29 22:33 dir5
drwxr-xr-x. 3 root root   19 11月 29 22:34 dir6
-rw-r--r--. 1 root root    0 11月 29 22:28 file1
-rw-r--r--. 1 root root    0 11月 29 22:28 file2
-rw-r--r--. 1 root root    0 11月 29 22:28 file3
-rw-r--r--. 1 root root    0 11月 29 22:29 file4
-rw-r--r--. 1 root root    0 11月 29 22:30 file5
-rw-r--r--. 1 root root    0 11月 29 22:30 file6
[root@localhost etc]# ls ~/dir6
dir66

2.4.3 rm

作用:删除文件或者是目录
语法:rm [-rf]  filename .....
eg:
  
[root@localhost ~]# ls
anaconda-ks.cfg  dir1  dir2  dir3  dir4  dir5  dir6  file1  file2  file3  file4  file5  file6
[root@localhost ~]# rm file1
rm:是否删除普通空文件 "file1"?y
[root@localhost ~]# ls
anaconda-ks.cfg  dir1  dir2  dir3  dir4  dir5  dir6  file2  file3  file4  file5  file6
[root@localhost ~]# rm dir1
rm: 无法删除"dir1": 是一个目录
[root@localhost ~]# rm -f file2
[root@localhost ~]# ls
anaconda-ks.cfg  dir1  dir2  dir3  dir4  dir5  dir6  file3  file4  file5  file6
[root@localhost ~]# rm -r dir1
rm:是否删除目录 "dir1"?y
[root@localhost ~]# ls
anaconda-ks.cfg  dir2  dir3  dir4  dir5  dir6  file3  file4  file5  file6
[root@localhost ~]#  


总结:  默认情况下,是有询问的删除文件,输入y表示删除,输入n表示不删除
       如果想要强制删除文件,添加-f, 但是要慎用。
       
       如果想要删除目录,必须添加-r,表示递归删除。

2.4.4 mv

 作用:移动文件或者目录,有更名作用。
语法: mv [OPTION]... SOURCE... DIRECTORY

eg: 
[root@localhost ~]# ls
anaconda-ks.cfg  dir2  dir3  dir4  dir5  dir6  file3  file4  file5  file6
[root@localhost ~]# mv file3 file4 dir2 dir3    # 将file3 file4 dir2 移动到dir3里
[root@localhost ~]# ls
anaconda-ks.cfg  dir3  dir4  dir5  dir6  file5  file6
[root@localhost ~]# ls dir3
dir2  file3  file4
[root@localhost ~]# mv file6 dir3/file7     #将file6移动到dir3里并更名为file7
[root@localhost ~]# ls dir3
dir2  file3  file4  file7
[root@localhost ~]#

2.4.5 cp

 作用:拷贝文件或者是目录
语法:cp [-r] source....directory

eg:
[root@localhost ~]# rm -rf ./*    删除当前目录下的所有非隐藏文件
[root@localhost ~]# touch file1 file2 file3
[root@localhost ~]# mkdir dir1 dir2 dir3
[root@localhost ~]# ll
总用量 0
drwxr-xr-x. 2 root root 6 11月 29 23:04 dir1
drwxr-xr-x. 2 root root 6 11月 29 23:04 dir2
drwxr-xr-x. 2 root root 6 11月 29 23:04 dir3
-rw-r--r--. 1 root root 0 11月 29 23:04 file1
-rw-r--r--. 1 root root 0 11月 29 23:04 file2
-rw-r--r--. 1 root root 0 11月 29 23:04 file3
[root@localhost ~]# cp file1 dir1   # 拷贝file1到dir1里
[root@localhost ~]# ll
总用量 0
drwxr-xr-x. 2 root root 19 11月 29 23:04 dir1
drwxr-xr-x. 2 root root  6 11月 29 23:04 dir2
drwxr-xr-x. 2 root root  6 11月 29 23:04 dir3
-rw-r--r--. 1 root root  0 11月 29 23:04 file1   #源文件依然存在
-rw-r--r--. 1 root root  0 11月 29 23:04 file2
-rw-r--r--. 1 root root  0 11月 29 23:04 file3
[root@localhost ~]# ls dir1   # 查看dir1里的内容
file1
[root@localhost ~]# echo "helloworld" > file2   #写一些字符串到file2文件里
[root@localhost ~]# ll
总用量 4
drwxr-xr-x. 2 root root 19 11月 29 23:04 dir1
drwxr-xr-x. 2 root root  6 11月 29 23:04 dir2
drwxr-xr-x. 2 root root  6 11月 29 23:04 dir3
-rw-r--r--. 1 root root  0 11月 29 23:04 file1
-rw-r--r--. 1 root root 11 11月 29 23:05 file2
-rw-r--r--. 1 root root  0 11月 29 23:04 file3
[root@localhost ~]# cp file2 dir1/file22   # 复制file2到dir1里同时更名为file22
[root@localhost ~]# ll dir1
总用量 4
-rw-r--r--. 1 root root  0 11月 29 23:04 file1
-rw-r--r--. 1 root root 11 11月 29 23:05 file22
[root@localhost ~]# cp file3 file4     #拷贝并更名
[root@localhost ~]# ll
总用量 4
drwxr-xr-x. 2 root root 33 11月 29 23:05 dir1
drwxr-xr-x. 2 root root  6 11月 29 23:04 dir2
drwxr-xr-x. 2 root root  6 11月 29 23:04 dir3
-rw-r--r--. 1 root root  0 11月 29 23:04 file1
-rw-r--r--. 1 root root 11 11月 29 23:05 file2
-rw-r--r--. 1 root root  0 11月 29 23:04 file3
-rw-r--r--. 1 root root  0 11月 29 23:07 file4
[root@localhost ~]# cp dir2 dir3    # 拷贝目录时, 不带参数-r,会忽略目录
cp: 略过目录"dir2"
[root@localhost ~]# ll dir3
总用量 0
[root@localhost ~]# cp dir1 dir3
cp: 略过目录"dir1"
[root@localhost ~]# ll dir3
总用量 0
[root@localhost ~]# cp -r dir1 dir3   # 如果想要拷贝目录,应该带上-r参数,表示递归拷贝
[root@localhost ~]# ll dir3
总用量 0
drwxr-xr-x. 2 root root 33 11月 29 23:08 dir1

2.4.6 ln

 作用:用于创建链接文件
语法: ln [-s] filename newfilename
解析:
    linux的链接文件分为两类,
    一类是软链接文件:  软链接文件相当于windows的快捷方式
                     文件和目录都可以有软链接
                     创建语法:  ln -s filename newfilename
                     
    一类是硬链接文件:  文件可以有硬链接,目录不能有硬链接
                     创建语法: ln filename newfilename
    
    
    总结: 软链接,新开辟了一个文件块和inode
          硬链接,就是源文件名的别名

2.4.7 echo

 作用: 用于展示一行文件信息
语法:  echo  字符串|环境变量名

[root@localhost ~]# echo you are best     # 打印一串字符,到控制台
you are best
[root@localhost ~]# echo "you are best"
you are best
[root@localhost ~]# echo $HOME   #打印HOME变量的值
/root
[root@localhost ~]# echo $PATH   #打印PATH变量的值
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost ~]# echo $HOSTNAME  #打印HOSTNAME变量的值
localhost.localdomain

扩展:重定向符号  

> : 重定向到某一个位置,会覆盖原有的内容
>>: 重定向到某一个文职,追加到原有内容的后面


[root@localhost ~]# echo "hello world"
hello world

# 将一串字符输入到content.txt文件里, 注意,如果该文件不存在,会直接创建。
[root@localhost ~]# echo "hello world" > content.txt  
[root@localhost ~]# ll
总用量 16
-rw-r--r--. 1 root root 12 11月 29 23:43 content.txt
[root@localhost ~]# echo "hello" > content.txt   #覆盖
[root@localhost ~]# ll
总用量 16
-rw-r--r--. 1 root root  6 11月 29 23:43 content.txt     #变成6个字节
[root@localhost ~]# echo "world" >> content.txt  #追加
[root@localhost ~]# ll
总用量 16
-rw-r--r--. 1 root root 12 11月 29 23:44 content.txt     #变成12个字节

2.5 文件查看指令

2.5.1 cat

作用: 查看整个文件的内容
语法:  cat [-An] filename
解析: -A  显示隐藏的字符
            -n  显示行号 

2.5.2 more/less

作用: 用于分页查看文件内容
语法: more filename
解析:  默认查看第一页内容
       空格键/f键    查看下一页
       enter键:  一行一行的滚动
       b :往回翻页
       q|Q: 退出
       
       less和more用法一样 

2.5.3 head

作用: 查看文件的头部信息,默认查看10行
语法: head [-number] filename
解析: 如果想要查看指定行数,添加-数字 

2.5.4 tail

作用:查看文件的末尾信息,默认查看10行
语法: tail [-number] filename
解析: 如果想要查看指定行数,添加-数字 

2.6 文件查找指令

2.6.1 find

作用:是可以根据指定类型参数,来查找文件系统中的文件或者是目录的
语法: find 搜索位置 条件
eg:
[root@localhost ~]# find /etc -name 'init*'    按照名字查找init开头的文件或目录
/etc/inittab
/etc/sysconfig/init
/etc/sysconfig/network-scripts/init.ipv6-global
/etc/init.d
/etc/rc.d/init.d
/etc/selinux/targeted/active/modules/100/init
/etc/selinux/targeted/contexts/initrc_context
[root@localhost ~]# find /etc -name 'init'    按照名字为init的文件或目录
/etc/sysconfig/init
/etc/selinux/targeted/active/modules/100/init
[root@localhost ~]# find /etc -name 'in??'    按照名字查找in开头并且长度为4的文件或目录
/etc/sysconfig/init
/etc/selinux/targeted/active/modules/100/init
[root@localhost ~]# find /etc -name '?i*'   按照名字查找第二个字符是i的文件或目录


find /etc -type d    查看/etc下的所有目录,包括子目录
                d:目录   l:软链接, f:普通文件
find /etc -size -1024 
find /etc -size +2K  -size -3k       单位: k,M,G等
          
          
注意: 默认单位为一个block   一个block相当于512byte
        如果想要查询小于100MB的文件, 100*1024KB  100*1024*2block
        所以:find /etc -size -204800 
                   find /etc -size +1024    查看大于512KB的文件

 2.6.2 grep

作用:用于过滤查询文件内容
语法:grep [-cinv] '搜寻字符串' filename

-c :输出匹配行的个数(是以行为单位,不是以出现次数为单位)
-i :忽略大小写,所以大小写视为相同
-n :显示匹配行及行号
-v :反向选择,显示不包含匹配文本的所有行。

eg:
  [root@localhost ~]# grep -i HOST ./profile   忽略大小写的查找host所在的行信息
  [root@localhost ~]# grep -ci HOST ./profile   忽略大小写的查找host所在的行的数量
  [root@localhost ~]# grep -in HOST ./profile   忽略大小写的查找host所在的行信息以及行号
  [root@localhost ~]# grep -v HOST ./profile  查找除了HOST所在的行的其他行的信息

扩展:管道  

作用: 将前一个命令的结果通过管道交给后一个命令,继续操作

[root@localhost ~]# grep -i HOST ./profile
HOSTNAME=`/usr/bin/hostname 2>/dev/null`
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL

# 前一个查询的结果交给下一个grep继续过滤
[root@localhost ~]# grep -i HOST ./profile  | grep USER 
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL 

2.6.3which 和 whereis  

which

作用:用来在path变量的值中查找命令的位置
语法: which  命令

whereis 

作用:用于查看命令的位置和帮助文件的位置
语法:  whereis  命令

2.7 文件(解)压缩指令

2.7.1 gzip/gunzip

作用:压缩指令,将每一个文件进行压缩。一个文件对应一个压缩文件
语法:  gzip  filename.....
特点:  
        - 只能压缩文件,
        - 并且源文件会消失
        - 压缩文件名的后缀.gz
gzip -d 表示解压缩,相当于gunzip的作用 

2.7.2 bzip2/bunzip2(需要安装)

作用:压缩指令,将每一个文件进行压缩。一个文件对应一个压缩文件
语法:  bzip2  filename.....
特点:  
        - 只能压缩文件,
        - 默认情况下,源文件会消失,  除非带上-k参数,会保留源文件
        - 压缩文件名的后缀.bz2
bzip2 -d 表示解压缩,相当于bunzip2的作用 

2.7.3 zip  

作用:压缩指令,可以将多个文件或者目录压缩到一个压缩文件中
语法: zip -r  compressfilename.zip  file1 file2.... dir1 dir2....
特点: 
    - 保留源文件
    - 需要自定义压缩文件名
    - 如果有目录要压缩,必须添加-r参数
    
    小贴士:zip是为了兼容windows的压缩工具,而提供的
    
    zip和unzip都需要安装

2.7.4 tar  

作用:打包指令,用于将多个文件打成一个包,也就是一个包文件
语法: tar -[cxvf] tarfilename.tar  file............

解析:  -c  :表示打包,即create
       -f  :用于指定新文件名,必须和新文件名挨着
       -x  :拆包, 不能和-c共存
       -v  :显示压缩过程
       
       eg:  tar -cvf michael.tar file1 file2 dir1 dir2
            tar -xvf michael.tar     拆包
 
小贴士: 
        - 打包后的文件大小,是打包前的总和。
        - 所以,如果想要压缩包文件,tar指令一般会和压缩(解压缩)指令一起使用。
        
        常用组合:   zcvf 中的z 表示gzip
                   jcvf 中的j 表示bzip2
          打包并压缩:tar -[zcvf] arfilename.tar  file............
                    tar -[jcvf] arfilename.tar  file............
         解压缩并拆包:tar -[zxvf] arfilename.tar
                     tar -[jxvf] arfilename.tar

2.8 时间指令date

作用:查看或者设置时间
reg:
    date     查看系统当前时间
    以自定义的方式显示系统时间:    date +'%Y-%m-%d %H:%M:%S'   

    注意:+与字符串之间不能有空格,与date之间要有空格
    设置时间
    eg: date  -s  "2015-5-8 19:48:00"
    同步到bios,重启之后才能继续生效
    eg: hwclock -w
    

作用:查看时间或者修改时间    
]$ date "+%Y-%m-%d %H:%M:%S" 更改输出样式
]$ date -s "2019-08-05 11:25:00" 设置时间
]$ date -d "10 days ago"  "+%Y-%m-%d %H:%M:%S"  获取10天前的时间
]$ dt=`date -d "10 days ago" "+%Y-%m-%d %H:%M:%S"`
]$ echo $dt

2.9 系统关机指令

1. 重启指令
   reboot
   init 6
2. 关机指令:
    shutdown -h now   立即关机
    shutdown -h 20:30 定时关机
    poweroff
    half
    init 0 

2.10 linux的快捷键和basename以及dirname

ctrl+c    终止前台程序
ctrl+z    将前台程序挂起,    fg指令是用于将挂起程序调度到前台运行
ctrl+l    清屏,相当于clear

ctrl + a   回到命令行的最前端
ctrl + e  回到命令行的最后面
ctrl + w  删除光标前的一个单词
ctrl + k  删除光标后的所有单词

basename   /root/profile     用于显示整个路径中的最后一个名字   结果:profile
dirname   /etc/dir1/profile   显示最后一个名字之前的整个路径    结果:/etc/dir1


tab键:  自动补全键
       按1次的效果:  补全到相同的字符的最后一位。
       按2次的效果:  显示所有符合该字符串开头的文件或者文件夹,或者是命令

2.11 磁盘相关命令

2.11.1 du

作用:用于查看文件或目录的大小(磁盘使用空间)
语法:du [-ahs] [文件名|目录]
解析:
-a 显示子文件的大小
-h 以易读的方式显示 KB,MB,GB等
-s summarize 统计总占有量

说明:  -s和-a不能同时使用

2.11.2 df

作用:用于查看Linux文件系统的状态信息,显示各个分区的容量、已使用量、未使用量及挂载点等信息以及剩余空间

语法:df \[-hkam] [挂载点]

-h(human-readable)根据磁盘空间和使用情况 以易读的方式显示 KB,MB,GB等
-k   以KB 为单位显示各分区的信息,默认
-m  以MB为单位显示信息
-a   显示所有分区包括大小为0 的分区

2.11.3 free

作用:显示系统内存的使用情况,包括物理内存、交换内存(swap)和内核缓冲区内存。  
        相当于windows的任务管理器里的性能查看
语法: free [-kmg]

选项:

-k:   以KB为单位显示,默认就是以KB为单位显示
-m:  以MB为单位显示
-g:    以GB为单位显示

清理缓存命令:
echo 1 > /proc/sys/vm/drop_caches

三、Linux的高阶指令(重要)

3.1 vi/vim编辑器及其相关指令

3.1.1 为什么要学习VI/VIM

1、所有的类Unix系统,都自带vi 文本编辑器
2、很多应用程序的编辑界面都会主动呼唤 vi编辑器 
3、vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计;
4、操作简单,编辑速度快。
5、VIM是VI的升级版

vi编辑器就是和windows的记事本,某些本文编辑工具(notepad++,editplus,sublim text)一样

3.1.2 模式介绍

命令模式(一般模式)

 用户对一个文件启动 Vim/Vi,便进入了命令模式(也称为一般模式)。此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。在此模式下,可以通过命令对文件内容进行删除,复制,粘贴等行为,可以理解为快捷键操作

 插入模式(编辑模式)

在命令模式下,输入i, I, o, O, a, A, r, R等任意命令,便会立即进入插入模式(也称之编辑模式),在这个模式下,我们才可以对文件进行详细的编辑,比如使用退格键,删除键,回车键等各式各样的文本编辑了。按【ESC】键回到命令模式 

底行命令模式

在命令模式下,输入字符【:?/】三个中的任意一个,就会来到底线命令模式下。在这个模式下,我们可以完成搜索、读取、存档、离开Vim/Vi等很多行为。按【ESC】键回到命令模式 

参考如图: 

3.1.3 常用命令(一般模式下使用)

H:移动到当前屏幕的最上一行的行首  
M:移动到当前屏幕的中间一行的行首  
L: 移动到当前屏幕的最下一行的行首  
gg:移动到这个文件的第一行,相当于1G (常用)  
G:移动到这个文件的最后一行(常用)
NG: 移动这个文件的第N行
x, X:在一行字符中,x表示向后删除一个字符(相当于del键),X为向前删除一个字符(相当于退格键) (常用)  
nx:n为数字,连续向后删除n个字符。  
dd:刪除游标所在的那一行(常用,也是剪切)  
ndd:n为数字。删除游标所在的向下n行(常用)  

d1G:刪除游标所在到第一行的所有行数据  
dG:刪除游标所在到最后一行的所有行数据 
yyY:复制游标所在的那一行数据(常用)  
nyy,nY:n 为数字。复制游标所在的向下n行(常用)  
p, P:p表示将复制的数据粘贴到游标所在行的下一行,P表示将复制的数据粘贴到游标所在行的上一行 (常用)  
u:撤销前一个动作。(常用) 

3.1.4 如何进入插入模式

i/I
    - i  光标所在处前开始插入
    - I  光标所在行行首开始插入

a/A
    - a  光标所在处后开始插入
    - A  光标所在行行尾开始插入
o/O
    o  光标所在行的下一行开始输入
    O  光标所在行的上一行开始输入

3.1.5 底行命令模式

退出操作:
    :q    不保存退出, 前提是什么都没干。才会成功
    :q!   强制退出,不保存
    :qw   保存并退出
    :qw!  强制保存并退出
其他的底层命令操作:
    :set nu    显示行号
    :set nonu  取消行号显示 

3.2 Linux的网络配置

3.2.1 网络的相关概念

1. 外网:IP是唯一性,不能重复。范围:0.0.0.0~255.255.255.255
2. 内网:通过路由器或者交换器设备,来重新设置IP地址。
   不同的内网的ip可以相同。内网A的某一台主机通过自己的网卡与自己的路由器A通信,然后路由器A通过网络中心
   与路由器B通信,路由器B再与内网中的某一台机器的网卡通信。
3. IP:   ip地址是确定一台机器的唯一标识符
4. NETMASK(子网掩码):与ip连用,用于确定网络段位            
   192.168.1.x      范围:1-254
   255.255.0.0     
   子网掩码有1的位置对应ip的部分就是网络段位。0对应的位置就是内网中主机的位置。    5. GATEWAY:网关,用于与连接外网的机器设备通信(路由器)换句话说,网关就是路由器的IP
6. DNS:域名解析服务器
   119.75.217.109  www.baidu.com


   IP:  IP是电脑在网络中的唯一标识符,IP的段位和号码。 段位和路由器一致,后面的号码决定该内网中可以有多少台电脑,但是初始的几个值以及最后的几个值是预用的,普通设备不能使用。
   路由器:路由器里的DHCP服务器的作用,是用来给设备分配动态IP
   DNS:  IP的另外一个好记的名字映射的解析器 

3.2.2 Linux的网络配置几种模式

1)桥接模式

        该模式下的虚拟机的IP与物理机的IP是同一个段位(换句话说,内网中的机器个数=物理机个数+虚拟机个数)

2)NAT模式

        使用的虚拟网卡是NetWork Adapter VMnet8,该虚拟网卡的作用是虚拟机与物理机通信。虚拟机的ip是由此虚拟交换机中的虚拟机DHCP服务器分配。能联网,可以与连接此虚拟交换机内的所有虚拟机进行通信。外网不能直接与此虚拟机通信

3)仅主机模式

作用就是虚拟机和物理机之间进行通信。

3.2.3 桥接模式下的静态IP的网络配置

步骤1)修改该虚拟机的连接方式为桥接模式

步骤2)修改配置文件 (/etc/sysconfig/network-scripts/ifcfg-ens33)

[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33

TYPE=Ethernet
BOOTPROTO=static         #三个值dhcp,static,none可选, dhcp表示动态分配,其他两个为静态
NAME=ens33
DEVICE=ens33
ONBOOT=yes        #开机后是否自动联网,yes为自动,no为手动
IPADDR=10.20.152.200
NETMASK=255.255.255.0
GATEWAY=10.20.152.1           # 这个单词特别容易写错
DNS1=10.20.152.1
DNS2=8.8.8.8
DNS3=114.114.114.114

步骤3)重启网络服务项  

 [root@localhost ~]# systemctl restart network

步骤4)查看ip地址

[root@localhost ~]# ip addr 

步骤5)校验网络是否畅通

1. 与外网是否通畅:ping  www.baidu.com       
   向百度服务器发送一个连接请求,如果连接成功,百度服务器就会向本机发送64个字节
2. 与物理机是否通畅:
      -- 虚拟机ping物理机    ping  物理机的ip
      -- 物理机ping虚拟机    ping  虚拟机的ip 

3.2.4 NAT模式下的静态IP的网络配置

步骤1)修改虚拟机的连接模式为NAT模式

步骤2)查看并修改VMNet8的虚拟信息

vmware的编辑菜单-->虚拟网络编辑器-->更改设置-->选中VMnet8,修改子网IP段位为192.168.10.0
-->点击应用-->点击NAT设置,查看相关信息,比如
子网IP、子网掩码、网关 

步骤3)修改配置文件  

 [root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33

TYPE=Ethernet
BOOTPROTO=static         #三个值dhcp,static,none可选, dhcp表示动态分配,其他两个为静态
NAME=ens33
DEVICE=ens33
ONBOOT=yes        #开机后是否自动联网,yes为自动,no为手动
IPADDR=192.168.10.101
NETMASK=255.255.255.0
GATEWAY=192.168.10.2        # 这个单词特别容易写错
DNS1=192.168.10.2
DNS2=8.8.8.8
DNS3=114.114.114.114

步骤4)重启网络服务项

[root@localhost ~]# systemctl restart network 

步骤5)查看ip地址  

[root@localhost ~]# ip addr 

步骤6)校验网络是否畅通

1. 与外网是否通畅:ping  www.baidu.com       
   向百度服务器发送一个连接请求,如果连接成功,百度服务器就会向本机发送64个字节
2. 与物理机是否通畅:
      -- 虚拟机ping物理机    ping  物理机的ip
      -- 物理机ping虚拟机    ping  虚拟机的ip   

 3.3 远程连接工具的应用

        因为Linux系统通常用于服务器,没有桌面环境,只有DOS界面,而且有的时候,服务器上的软件坏掉了,或者由于权限问题,不能直接操作服务器。而是通过远程进行操作,比如管理员授权普通员工连接服务器,或者管理员自己在家,用家里的电脑连接公司的服务器,进行作业,更加方便。所以,市面上提供很多中可以远程连接服务器的软件工具。比如Xshell、FinallShell、CRT、putty、MobaXterm等

        这里选择使用MobaXterm这款工具,版本随意:MobaXterm_Installer_v10.9.zip. 双击安装即可。

小贴士:setting里可以设置主题,点击右键即粘贴等  

3.4 其他网络设置

3.4.1 防火墙的关闭

systemctl status firewalld    #查看防火墙的状态
systemctl stop firewalld    #临时关闭防火墙
systemctl start firewalld   #临时开启防火墙
systemctl disable firewalld   #设置开机不自动启动防火墙
systemctl enable firewalld   #设置开机自动启动防火墙


小贴士: 集群中的linux,通常都是关闭防火墙的

3.4.2 NetworkManager的关闭

systemctl status NetworkManager
systemctl stop NetworkManager
systemctl start NetworkManager
systemctl disable NetworkManager
systemctl enable NetworkManager

小贴士: 集群中的linux,通常都是关闭NetworkManager的 

3.4.3 netstat指令

注意:该指令在net-tools安装包内,需要安装。yum -y install net-tools 

 英文:network statistics        命令路径:/bin/netstat        执行权限:所有用户
作用:主要用于检测主机的网络配置和状况

-a (all)显示所有连接和监听端口
-t  (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 使用数字方式显示地址和端口号
-p 显示socket的PID和进程的名字
-l  (listening)显示监控中的服务器的socket

案例演示:
eg: netstat -tlnu      查看本机监听(正在使用的)的端口
eg: netstat -nltp      查看本机监听(正在使用的)的端口以及PID和Name信息
eg: netstat -ntlp | grep tcp6    查看某一个程序的端口信息
eg: netstat -atnp | grep 25   查看端口

3.4.4 主机名和映射文件的修改

1)主机名的修改

方式1:直接修改配置文件/etc/hostname
[root@localhost ~]# vi  /etc/hostname

方式2: 使用hostnamectl指令
[root@localhost ~]# hostnamectl set-hostname qianfeng01

主机名的查看
[root@localhost ~]# hostname

如果想要更新当前会话的主机名,要么重启,要么进入子程序(直接bash指令)

2)映射文件的修改

域名映射文件的位置/etc/hosts  

[root@qianfeng01 ~]# vi  /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.101 qianfeng01 qianfeng001
192.168.10.102 qianfeng02
192.168.10.103 qianfeng03
192.168.10.104 qianfeng04
192.168.10.105 qianfeng05

注意:先写ip,在写域名字符串


ping指令,会先访问/etc/hosts文件,如果找到了ping后面的域名,则使用域名对应的ip地址,向ip地址所在的机器发送请求

3.5 常用的进程管理命令

3.5.1 ps

作用:查看系统中的进程信息
语法:ps [-auxle]
常用选项

a:显示所有用户的进程
u:显示用户名和启动时间
x:显示没有控制终端的进程
e:显示所有进程,包括没有控制终端的进程
l:长格式显示

eg:
    ps -aux  
    ps -aux | grep java

3.5.2 pstree(需要安装:yum -y install psmisc) 

作用:查看当前进程树

语法:pstree [选项]
-p  显示进程PID
-u  显示进程的所属用户

eg:  pstree -p

3.5.3 kill

作用:杀死进程
语法:  kill -9 pid.....

eg:   kill -9  1514  1548

3.5.3 nohup  

作用: 将前台进程设置成后台进程, 需要配合&符号,才可以解放当前窗口

eg:  nohup ping www.baidu.com > ping.txt &

3.6 用户与用户组的相关命令

3.6.1 简介

要登入Linux系统,一定要有账号和密码才行,否则怎么登入,您说是吧。我们还知道Linux系统是一个多用户的操作系统;那么,不同的用户应该拥有不同的权限才行吧?否则,有什么意义呢。

Linux系统用user和group两个概念来进行一部分权限的限定。当然,这些权限的管理工作,还是超级管理员root来做的。

注意:因为整个系统的管理工作都是root,所以使用root用户时,要谨慎,能不用时,就尽量不用。  

user,是登入Linux系统的账号,其实这个账号只是为了方便人们记忆而已,每一个账号都对应一个唯一的UID数字标识符,这个对应关系存储在/etc/passwd文件当中。所以,我们在登入的时候,Linux其实使用的是UID来辨识是否存在此用户的。

group,由于多用户概念的引用,Linux为了方便管理用户,又引用了用户组的概念。Linux系统可以有多个用户组,每个用户组也都有自己的GID数字唯一标识符。

1.用户和用户组的关系
    - 一个用户可以属于多个用户组(主用户组和附加用户组)。
    - 一个用户组下可以有多个用户。

2. 举个现实生活中的例子
    用户A、B、C是公司开发部门项目组M的成员,正在开发一个JAVA项目。
    用户D、E、F是公司开发部门项目组N的成员,正在开发一个C语言项目。
    项目组N由于要赶时间完成开发,向项目组M借用了一个用户A(A牛掰,会java,还会c)。
    因此牛掰的A每天的上午要在项目组M中开发JAVA项目,下午要在项目组N中开发c项目。

3.6.2 User的管理(/etc/passwd,/etc/shadow)

1)useradd

语法格式:useradd  [选项]  [用户名]
常用选项:
  -c comment 指定一段注释性描述。
  -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
  -g 用户组 指定用户所属的用户组。
  -G 用户组,指定用户所属的附加组。
  -s Shell文件 指定用户的登录Shell。
  -u 用户ID号 指定用户的UID
  
eg:
[root@qianfeng01 home]#  useradd  -c 'this is a new user' -g 0 -G 1 -u 1001 -s /bin/bash  michael


[root@qianfeng01 home]#  useradd  -d /home/scott1 -c 'this is a new user' -g 0 -G 1 -u 1002 -s /bin/bash  scott

小贴士:  普通用户的家的位置和名字       /home/用户名/

2)passwd

语法格式:passwd  [选项]  [用户名]
常用选项:
    -l 锁定口令,即禁用账号。
    -u 口令解锁。
    -d 使账号无口令。
    -f 强迫用户下次登录时修改口令。

eg:   passwd   michael

注意:用户账号刚创建时没有口令,账号被系统锁定,无法使用。只有我们为账户指定口令后,此账户才可以使用。设定口令的命令为passwd,超级用户可以为自己和普通用户设定口令,普通用户只能修改自己的口令。  

3)su

语法:su [用户名]
作用:切换用户账户

eg:
    su michael    切换成michael身份
    su            切换成root身份
    su root       切换成root身份

4)usermod

语法格式:usermod  [选项]  [用户名]
常用的选项与useradd命令中的选项一样,有-c, -d, -m, -g, -G, -s, -u等,用这些参数为用户指定新值。
另外,可以使用 -l 选项 来修改用户名(建议:如果修改用户名,最好也一起把主目录也一起修改了)。

格式如下:   如果修改用户名,最好带上-m参数,同时修改主目录
usermod  -l  newName  -d /home/newName  -m oldName

案例1:# usermod -s /bin/ksh -d /home/ls –g adm lisi
此命令将用户lisi的登录Shell修改为ksh,主目录改为/home/ls,用户组改为adm
案例2:
     usermod -m michael -l michael1  -d /home/michael1

5)userdel

系统管理员可以将用户账户从系统中删除。在做删除操作时,/etc/passwd,/etc/shadow,/etc/group等相关系统文件中的该用户记录会同时删除。有的时候,可能还需要删除该用户相关的主目录。  

 语法格式:userdel  [选项]  [用户名]
常用的选项是 -r,它的作用是把用户的主目录一起删除。

如果没有添加-r. 可以使用useradd -g 指定原组 -u 指定原uid值  用户名, 添加回来,再次删除

3.6.3 Group的管理(/etc/group)

Linux将系统内的多个用户规划到不同的用户组中,这样系统就可以通过管理用户组来统一管理多个用户了。默认情况下,系统在创建用户时,会同时创建一个与它同名的用户组,然后将此用户划分到这个用户组中。

用户组的单独管理,其实就是对/etc/group系统文件的管理,涉及到的操作有:添加,删除和修改。

1)groupadd

语法格式如下:groupadd  [选项]  [用户组]
常用选项有:
       -g   指定新用户组的组标识号(gid)。
       -o  一般与-g选项同时使用,表示新用户组的gid可以与系统已有用户组的gid相同。 

实例1:# groupadd grp1
//在系统中添加一个新组grp1,新组的gid是在当前已有的最大组标识号的基础上自动+1。
 
实例2:# groupadd -g 600 grp2
//在系统中添加了一个新组grp2,同时指定新组的组标识号是600。 

2)groupmod

语法格式:groupmod  [选项]  [用户组]
常用的选项有:
        -g 为用户组指定新的组标识号。
        -o 与-g选项同时使用,用户组的新gid可以与系统已有用户组的gid相同。
        -n  将用户组的名字改为新名字

实例1: # groupmod -g 601 grp1
  // 将用户组grp1的组标识号修改为601。

实例2: # groupmod –g 10000 -n grp2 grp1
  // 将用户组grp1的标识号改为10000,同时将组名修改为grp2。

3)groupdel

语法格式:groupdel   [用户组]

案例1:# groupdel grp1
//从系统中删除用户组grp1。

3.7 文件权限命令

3.7.1 Linux系统相对安全的原因

总有人问,Linux系统为什么比windows系统相对安全呢?我们可以总结如下:

1. 使用Linux系统的人数少,尤其在国内,很少有人关注Linux。
2. 因为Linux开源,任何的系统漏洞都会被民间高手,或者是官方人员很快的发现。从漏洞的发现到补丁的放出,时间相当短,没有时间给病毒或者黑客作乱的机会。
3. 然后就是linux的权限管理,linux的权限管理很严格。病毒或者黑客想修改系统文件或者系统日志,除非有管理员密码。所以就算中了病毒,病毒的危害也非常的小,重要的系统文件都不会被破坏。所以发现了病毒稍做处理就搞定了。
4. 还有就是linux系统的程序管理。linux安装程序,基本都是利用程序管理软件,比如ubuntu、debian下的软件中心、centos,fedora和红帽的yum。linux系统安装程序基本上都是用软件管理程序,从程序开发者官网上或者是相应的发行版社区直接下载安装。不会有被恶意篡改的软件被安装到使用者的电脑上。

3.7.2 文件权限的种类

文件权限代表字符数字表示对文件的含义对目录的含义
读(read)r4可以查看文件的内容可以列出目录的内容
写(write)w2可以修改文件的内容可以在目录内创建、删除文件
执行(execute)x1可以执行文件可以进入目录

3.7.3 文件属性解析

[root@qianfeng01 ~]#  ls -l 
-rw-r--r--  1     root  root   302    8月27 9:24  namelist  
【 1 】    【2】   【3】  【4】   【5】    【6】        【7】

解析:
   第一列:由10个字符组成。第一个字符表示文件类型,第2~10个字符表示权限
         权限由9个字符构成: 前三个字符表示owner拥有的权限
                          中间三个字符表示group下的所有成员拥有的权限
                          后三个字符表示other的权限
   第二列:文件的硬链接数
   第三列:owner的名称
   第四列:group的名称
   第五列:文件大小
   第六列:该文件的最后一次访问时间    
   第七列:该文件名 

3.7.4 文件权限的针对者

从文件属性的第一列的解析来看,文件的权限是针对于三种不同用户来设定的

  • 拥有者,即文件的owner

  • 用户组,即文件的所属组

  • 其他人,即除了上述两种情况的其他情况,称为others

3.7.5 文件的权限的修改(chmod指令)

语法1:chmod [ugoa][+-=][rwx] [filename]    该指令只能是root和owner自己使用
     解析:
        u: 表示owner,即第2~4个字符
        g: 表示group,即第5~7个字符
        o: 表示other,即第8~10个字符
        a: 表示all, 即所有人
        +: 表示在原有的权限上添加新权限
        -: 表示在原有的权限上撤销权限
        =: 覆盖原有的权限,授予新权限 
    注意:使用+-=操作时,不能使用数字。
    注意,如果使用数字,那就不能使用+-=,而且尽量使用三位数,第一个数字是owner的,第二个是grouo,第三个是other。
    拓展,如果写成了一位数,比如4,相对于004,两位数41,相对于041.
语法2:chmod [421] [filename]
      解析:第二个参数中的三个数字分别表示owner,group,other的权限
           即每个数字表示某一个身份的权限之和。

案例1:赋予文件file1所属组写权限
      chmod g+w file1
案例2:取消所有者,用户组,其他人三个部分对file1的写权限
      chmod ugo-w file1
案例3:设定目录dir1为所有用户具有全部权限
      chmod 777 dir1 
      
案例4:chmod 763 file1
        7表示拥有者的权限是可读可写可执行  
        6表示所属组的权限是可读可写
        3表示其他人的权限是可写可执行

 扩展:

文件和目录创建后有默认权限:

    root身份创建的:
      文件:644
      目录:755
    普通用户创建的:
      文件:664
      目录:775

赋值权限问题:
    针对于文件而言:权限可以任意chmod,但是在应用时,会涉及到权限够不够的问题
            如果文件有执行权限,则必须给读权限。
            合理性问题:如果文件有写权限,应该给读权限
    针对于目录而言:权限可以任意chmod,但是在应用时,会涉及到权限够不够的问题
            如果有r权限,应该赋予x权限
            如果有w权限,应该赋予x权限

3.7.6 文件所属组的修改(chgrp指令)

格式:chgrp [-R] [newGroup] filename          该指令只能是root用户使用
功能描述:改变文件或目录的所属组

案例1:  改变文件file1的所属组为adm
            chgrp  dam  file1
案例2:修改目录dir1及其子目录和文件的用户组为michael
            chgrp -R michael dir1

3.7.7 文件拥有者的修改(chown指令)

格式1:chown [-R] [newOwner] filename       该指令只能是root用户使用
参数: -R 表示递归修改拥有者

案例1:改变文件file1的所有者为nobody
    chown  nobody  file1
案例2:修改目录dir1及其子目录和文件的拥有者为michael.
    chown -R michael: dir1
           
格式2:chown  newOwner:newGroup filename   #可以有chgrp的功能
案例3:将install.log的拥有者与群组改为root 
    chown root:root install.log
案例4:修改目录dir1的用户组为root
    chown .root dir1

3.8 sudo指令的应用

3.8.1 sudo简介

        有的时候,在操作和管理Linux时,我们需要切换成root身份才能进行,比如修改权限等。su可以用于切换成root账号,但是需要使用root账号的密码(管理员把自己的密码给普通用户 不合适吧)。

        sudo,则是root给普通用户的一个特殊指令,普通用户不用再特意切换成root身份,就可以使用root才能使用的一些指令。仅仅需要普通用户自己的密码即可(通过配置,甚至可以不用密码)

        当然,普通用户拥有sudo的使用权,必须是管理员root事先通过审核,才能开放给普通用户的。(即,除非是信任用户,否则一般用户默认是不能操作sudo的) 

3.8.2 sudo的配置

sudo的配置,其实就是修改/etc/sudoers文件里的信息

参考下图:

通过上图,可以看到,sudoers文件的权限即使是root,也是只有一个读权限。

3.8.2.1 修改该文件的方式

方式1:root用户直接vi /etc/sudoers  然后强制保存
方式2:直接输入牛掰哄哄的visudo 

3.8.2.2 具体修改

[root@linux01 ~]# visudo

进入后,找到第100行和110行。

- 在100行的 root ALL=(ALL) ALL下面填写                  ---配置这个,就可以使用sudo了。       
  scott  ALL=(ALL)   ALL
- 在110行的 #%whell  ALL=(ALL)  NOPASSWD:ALL下面填写    --配置这个,就可以不用再输入密码了
  scott  ALL=(ALL) NOPASSWD:ALL
  
-解析:   scott  ALL=(ALL) ALL
    第一列:使用sudo的账号
    第二列:客户端计算机主机名
    第三列:可切换的身份
    第四列:可使用的指令,注意使用具体指令时需要使用绝对路径,多个指令用逗号分开

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • CVPR 2024论文分享┆LMDrive:基于大模型的闭环端到端自动驾驶
  • 【Unity3D小技巧】Unity3D中实现对InputField的自定义输入限制实例
  • [数据集][目标检测]铁轨缺陷检测数据集VOC+YOLO格式4020张4类别
  • 埃筛C++写法
  • BUUCTF PWN wp--pwn1_sctf_2016
  • 区块链的搭建与运维4
  • 【数据库】MySQL表的约束
  • QT-贪吃蛇小游戏
  • 【自动化】一共获取6600多公司信息【逆向】一页15还加密。
  • S7通信协议从入门到精通_1_Sharp7(C#)类编写西门子 S7系列 plc驱动程序(扩展C++语言)
  • springCloud 网关(gateway)配置跨域访问
  • MyBatis中的#{}和${}区别、ResultMap使用、MyBatis常用注解方式、MyBatis动态SQL
  • spark全面个人总结(20个面试点)非网文 持续更新中
  • C语言 ——— 常见的动态内存错误(上篇)
  • Parallels Desktop 19 for Mac 安装虚拟机需要激活吗
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • Docker 笔记(2):Dockerfile
  • in typeof instanceof ===这些运算符有什么作用
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • JS学习笔记——闭包
  • js中的正则表达式入门
  • npx命令介绍
  • PaddlePaddle-GitHub的正确打开姿势
  • Python 反序列化安全问题(二)
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • Redux系列x:源码分析
  • SpiderData 2019年2月16日 DApp数据排行榜
  • 技术发展面试
  • 免费小说阅读小程序
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 新版博客前端前瞻
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • kubernetes资源对象--ingress
  • ​批处理文件中的errorlevel用法
  • # linux 中使用 visudo 命令,怎么保存退出?
  • # Redis 入门到精通(七)-- redis 删除策略
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • (13)Hive调优——动态分区导致的小文件问题
  • (20050108)又读《平凡的世界》
  • (k8s中)docker netty OOM问题记录
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (第一天)包装对象、作用域、创建对象
  • (七)理解angular中的module和injector,即依赖注入
  • (十八)Flink CEP 详解
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (自适应手机端)行业协会机构网站模板
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • .form文件_一篇文章学会文件上传
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .net 无限分类
  • .Net--CLS,CTS,CLI,BCL,FCL