学好Linux操作系统这一篇就够了

作者:codejiwei

日期:2020-09-28

CentOS

1 VM与Linux的安装

  • 注意:这里的硬盘分区这里比之前的ubuntu系统多了一个200M左右挂载在/boot的分区。

  • 另外:自定义系统软件的时候,除了基本系统内的:基本、兼容程序库;应用程序内的:互联网浏览器;中文语言支持;桌面(正式开发不用),其他的所有都不选。

  • 然后:去掉重新引导界面的Kdump。

  • 联网:设置网络为自动连接。

  • 最后:安装VMTools,作用是:虚拟机显示优化和调整,方便虚拟机和本机的交互,拖放文件、鼠标切换等

    1. 点击安装VMware Tools

    2. 将压缩文件拖拽到桌面,解压到此处

    3. 终端内运行vmware-install.pl,然后一直回车即可


  • 设置共享文件夹,可以通过/mnt/hgfs/centos2-share-window此路径链接到window下目录。

  • 网络配置方式:

    • 桥接模式

      1. 好处是:大家都在同一网段,相互可以通讯
      2. 缺点是:因为ip地址有限,可能造成ip冲突
    • Nat网络地址转换模式

      1. 好处是:虚拟机不占用其他的ip,所以不会ip冲突
      2. 缺点是:内网的其他人不能和虚拟机通讯
    • 主机模式

      单独的一台电脑

2 远程登录软件

  • Xshell5
  • SecureCRT

3 远程上传下载文件

  • Xftp5
  • FileZilla

4Linux目录结构

1596080512865

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Pn4clJi8-1601865733388)(F:\CopyFile\MarkDown学习\Linux\CentOS.assets\1596080583774.png)]

1596080609980

1596080634935

①etc目录常用文件

/etc/passwd 用户信息

/etc/group 组信息

/etc/inittab 当前运行级别

/etc/sysconfig/network-scripts/ifcfg-eth0 网络配置文件

/etc/sysconfig/network 主机映像文件

②dev目录

/dev/sdb1 硬盘分区

5Vi和Vim编辑器

  • 正常模式

    在正常模式下,可以使用快捷键

  • 插入模式

    也叫编辑模式,输入i和o等

  • 命令行模式

    可以通过命令,完成读取、退出、替换等操作

    保存退出:wq

    强制保存退出:wq!

  • 快捷键使用:

    • 拷贝当前行yy

    • 拷贝当前行向下的5行,5yy

    • 粘贴:p

    • 删除当前行:dd

    • 删除当前行向下的5行:5dd

    • 删除单个元素x 相当于delete;X相当于Backspace

    • 撤销操作:u

    • 快速定位到尾行:G

    • 快速定位到首行:gg或1G

    • 将光标移动到20行:20 shift +g 或 20 G

    • 查找某个单词: /查找内容,输入n是查找下一个

    • 设置文件的行号::set nu

    • 取消文件的行号::set nonu

6重启、关机、注销

①关机

  • 立即关机:shutdown -h now
  • 1分钟后关机:shutdown -h 1
  • 立即关机:halt

②重启

  • 重启:shutdown -r now
  • 重启:reboot

③sync指令

  • 把内存的数据写入磁盘,防止数据丢失

④用户登录注销

  • 注销:logout,在图形界面无效,远程操作有效
  • 切换用户:su +用户名

7用户管理

  • 用户和组的概念

root - root组

hadoop - hadoop组(默认创建用户就自动生成了一个该用户的组)

  • 家目录概念

用户登录的时候会自动进入自己的家目录:/home/hadoop

①添加用户

必须是管理员权限才能添加删除用户操作。

  • useradd [选项] 用户名
  • useradd -d /home/tiger hadoop 将用户的家目录指定放到/home/tiger目录

前提是:在/home/下不能存在tiger这个目录

②删除用户

  • userdel -r hadoop

删除用户同时删除/home/下的hadoop这个用户的家目录。

  • userdel hadoop

这样只是删除了hadoop这个用户,但是不会同时删除/home/下的hadoop文件

  • 注意:一般也不会删除用户文件

③指定修改密码

  • passwd+用户名

④查询用户信息

  • id + 用户名

⑤查看当前是哪个用户

  • whoami

查看当前登录的账号是谁

  • who am i

  • 查看所有的用户或者组信息

    cat /etc/passwd 查看用户

    cat /etc/group 查看所有组

⑥切换用户su

[root@hadoop101 ~]#su codejiwei

⑦设置普通用户root权限

8用户组管理

  • 创建组

groupadd +组名

  • 删除组

groupdel +组名

  • 添加用户的时候直接指定组

useradd -g 用户组 用户名

useradd -g root hadoop
  • 修改用户所在组

usermod -g 用户组 用户名

1595321078862

9用户和组的文件信息

用户配置文件(用户信息):/etc/passwd

1596295608237

组配置文件(组信息):/etc/group

1595321743954

口令配置文件(密码和登录信息,是加密的):/etc/shadow

10运行级别

①运行级别说明

  1. 0 :关机

  2. 1 :单用户 [类似安全模式, 这个模式可以帮助找回root密码]

  3. 2:多用户状态没有网络服务

  4. 3:多用户状态有网络服务 [使用最多]

  5. 4:系统未使用保留给用户

  6. 5:图形界面 【】

  7. 6:系统重启

②查看当前的运行级别

cat /etc/inittab

1595323270780

③指定运行级别

init +级别号
init 3	#切换到3运行级别

init 0	#关机

init 6	#重启

面试题

  • 如何找回root密码?

启动时->快速输入enter->输入e-> 进入到编辑界面-> 选择中间有kernel 项->输入e(edit)-> 在该行的最后写入 1 [表示修改内核,临时生效]-> 输入enter->输入b [boot]-> 进入到单用户模式 【这里就可以做补救工作】

  • 我的理解是?那岂不是谁都可以修改root密码?

解:这种方式修改root密码不能远程登录修改,只能在机房里,手里拿着机器才能修改,所以默认这台电脑就是你的。

11Linux实用指令

①帮助指令

  • man 获得帮助信息
  • help 帮助文档

②文件目录类

  • pwd 显示当前工作目录的绝对路径

  • ls 显示当前路径的文件或目录

    • ls -a 显示隐藏的文件
    • ls -l 以长列表的形式显示信息
  • cd 切换路径

  • mkdir 创建目录

    • mkdir -p /home/hadoop 创建多级目录
  • rmdir 删除目录,不能删除非空的目录

    • 其实就等于rm -r /home/hadoop = rmdir /home/hadoop
  • rm 删除文件,

    • rm -rf /home/hadoop 可以删除非空的目录
  • touch 创建空文件

    • touch hello.txt
    • touch hello1.txt hello2.txt
  • cp 拷贝指令

    • cp -r 递归复制整个文件夹
    • \cp -r 强制复制 不提示信息
  • rm 移除文件或目录

    • rm -r 删除整个文件夹
    • rm -f 强制删除不提示
  • cat 查看文件内容

    • cat -n 显示行号查看文件内容
    • cat -n /etc/profile | more 通常和more一起使用 分页显示
  • more 文本过滤器☆

    • 空格键 :翻页
    • enter:一行一行
    • ctrl + B :上一页
  • less 分页显示★ 按q退出

  • 输出重定向>

    • ls -l >文件 (功能描述:列表的内容写入文件a.txt中(覆盖写))
    • cat 文件1 > 文件2 (功能描述:将文件1的内容覆盖到文件2)
  • 追加>>

    • ls -al >>文件 (功能描述:列表的内容追加到文件aa.txt的末尾)
    • echo “内容”>> 文件
  • echo 输出内容到控制台

    • echo $PATH 输出当前环境变量

      /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

  • head 显示文件的前几行

    • head -5 file.txt
    • 默认显示前10行
  • tail 显示文件的后几行

    • tail -5 /etc/profile
    • tail -f /etc/profile 实时追踪该文档的所有更新,工作中经常使用
    • 案例:实时监控info.txt文件,该文件有变化时,实时就能看到!
  • ln 软连接、符号连接指令

    切换到软连接的真实目录:

    • ln -s 链接目的路径 软连接名称

    • 相当于windows系统的快捷方式,主要存放了链接其他文件的路径

    • 案例1:在/home目录下创建一个linkToRoot,链接到/root目录

      1595405687501

    这个时候进入到linkToRoot会自动进入到/root路径下,但是用pwd查看当前路径还是:/home/linkToRoot

    • 删除软连接:rm -r linkToRoot

      注意不能这样删除linkToRoot/;否则会出现资源忙现象。

  • history 查看执行过的历史指令,也可以执行历史指令

    • 后10条指令

      1595406086485

    • 执行历史编号为n的指令

      1595406164834

③时间日期类

  • date 显示当前日期和时间

1595406215921

  • 显示年月日:

    1595406332871

  • 显示年月日时分秒

    1595406433167

  • 设置日期

    • 案例:设置当前时间为:2020-11-11 11:11:11

      date -s "2020-11-11 11:11:11"
      
  • cal 显示当前日历

1595406622403

  • 显示一年的日历

1595406649596

④搜索查找类

  • find 【搜索范围】 【选项】

    • 案例1:按文件名,根据名称查找/home目录下的hello.txt文件

      1595406901789

    • 案例2:按照拥有者查找:查找/opt目录下,用户名称为root的文件

      1595407040172

    • 案例3:查找大小范围:查找整个系统下大于20m的文件(+n 大于 -n 小于 n 等于)

      1595407143484

    • 按照通配符去查找:查找/home 下所有的.txt文件

      1595407680727

  • locate 快速定位文件路径

    • 第一步:创建locate数据库:updatedb

    • 第二部:查找hello.txt文件

      1595408053653

  • grep指令和管道符号|

1595408393668

⑤压缩解压缩

  • gzipgunzip

    适合单文件压缩,解压后源文件不保留

    • gzip用于压缩文件
    • 压缩后不会保留原来的文件。
    • gunzip 解压缩文件
    • 案例:gzip压缩,将/home下的hello.txt文件进行压缩,然后再解压
  • zip和unzip

  • tar 打包指令(最常用!)

    • 打包:tar -zcf home.tar.gz /home

      将/home文件打包成home.tar.gz文件

    • 解压:tar -zxf home.tar.gz /home

      将home.tar.gz文件解压到/home文件下

12组管理和权限管理

①组管理

  • 文件详细信息

1595410611127

  • 修改文件所有者
    • chown 新的文件所有者名 文件名称

1595410741751

​ 但是可以看到上面的组还是root,下面就修改文件所在组。

一般就用chown atguigu:atguigu 文件名 同时修改文件所有者和所在组

  • 修改文件所在组

    • chgrp 要改为的新的组名 文件名

      1595411409414

  • 修改用户的所在组(前面第8节也有)

    • usermod -g 要改到的组名 用户名

②文件详细信息

1596081024606

(5)文件的话是1;目录的话是里面有几个子目录

(6)文件的话是多少个字节;目录的话都是4096

③权限管理

对文件进行权限的管理操作:

  • 1596081061068第二种方式:通过数字变更权限:

    1596081077836

  • 修改文件的所有者(上面也讲过了!)

    • chown 新的文件所有者 文件名

    • chown -R 新的文件所有者 目录名

      -R 可以递归的将整个目录下的所有文件的所有者都修改为新的用户

  • 修改文件的所有组(上面也讲过了!)

    • chgrp 新的组 文件名

    • chgrp -R 新的组 目录名

      这样就将整个目录下的所有文件的组修改成新的组了!

13crond任务调度

①任务调度(定时任务)

系统在某个时间执行特定的命令或程序

  • crontab[选项]

    • crontab -e 编辑crontab定时任务
    • crontab -r 删除当前用户的所有crontab任务
    • crontab -l 查询crontab任务
  • 任务调度文件:/etc/crontab

  • 参数说明:

    img

img

img

②应用案例(案例2-3为正规写法)

  • 每分钟都执行ls -l /etc/ > /tmp/to.txt

    每分钟都将/etc目录下的信息写入到/tmp/to.txt文件

1595507576017

输入crontab -e后需要输入 指令:*/1 * * * * ls -l /etc/ > /tmp/to.txt

​ 查看定时任务:

1595507712819

  • 案例2:每隔1分钟,就将当前的时间和日期,追加到 /tmp/mydate.log 文件中。

    首先用vim创建一个/home/mydate.sh的文件,在里面编辑要执行的操作:

    date >> /home/mydate.txt	# 表示把日期追加到mydate.txt这个文件中
    cal >> /home/mydate.txt 	
    

    然后,将.sh文件修改成可执行文件

    chmod 744 mydate.sh
    

    最后,给mydate.sh可执行文件创建定时任务

    crontab -e
    在里面添加定时任务
    */1 * * * * /home/mydate.sh		#每小时的每1分钟,一天每小时、一月每天、一年每月、一周每天 执行/home/mydate.sh
    
  • 案例3:每天凌晨2:00将mysql数据库testdb,备份到文件backdb.txt

    首先用vim创建一个backupdb.sh文件,在里面编辑要执行的操作

    /usr/local/mysql/bin/mysqldump -uroot -proot testdb > /home/backdb.txt
    

    然后,将.sh文件修改为可执行文件chmod 744 backupdb.sh

    最后,为backupdb.sh创建定时任务

    crontab -e
    
    * 2 * * * /home/backupdb.sh
    

14磁盘分区和挂载

①分区的基础知识(了解)

  • mbr分区;gtp分区

②Linux分区

  • 硬盘分类:

    • IDE硬盘:”hdx~“ :”hd“表示IDE硬盘;”x“表示盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘);“~”代表分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区。
    • SCSI硬盘:“sdx~”
  • lsblk -f 查看系统的分区和挂载情况

1595506095829

  • lsblk 查看系统分区、挂载情况、大小

1595506286409

③案例:添加新硬盘

  1. 添加一块硬盘1G,设置中添加硬盘即可‘

  2. 重启服务器reboot

    lsblk

    1595510580253

  3. 给sdb硬盘分区

    fdisk /dev/sdb

    分区:m查看命令列表

    ​ n 新增分区

    ​ p 显示磁盘分区,然后选1

    ​ 回车 默认全部剩余时间

    ​ w 写入并退出

    1595510953626

    1. 格式化sdb1

      mkfs -t ext4 /dev/sdb1 (格式化为ext4文件格式)

      1595511171717

    2. 挂载sdb1

    mount /dev/sdb1 /home/newdisk (挂载到/home/newdisk) 注意此时不要在newdisk文件下

1595511373931

  1. 上面的方式,只是临时挂载,重启系统挂载消失,配置Linux分区表,实现自动挂载

    vim /etc/fstab

1595511553267

  1. 卸载:umount 设备名 | 挂载路径

    umount /dev/sdb1

15磁盘查询指令

①df命令

  • 查看整个磁盘的使用情况

-h表示带计量单位:K M G等

1595580391229

②目录占用情况du指令

查看指定目录的各个文件夹的磁盘占用情况。!!!

  • du -h /目录

    查询指定目录的磁盘占用情况,默认为当前目录

    -s 指定目录占用大小汇总

    -h 带计量单位

    -a 含文件

    –max-depth=1 子目录深度

    -c 列出明细的同时,增加汇总值

  • 应用实例:查询 /usr目录的磁盘占用情况,深度为1

    du -ach --max-depth=1 /usr
    

    1595581090399

③工作使用指令

  1. 统计/home文件夹下文件的个数

    ls -l |grep "^-" | wc -l	# 首先过滤只保留以-开头的表示文件,然后统计其个数
    
  2. 统计/home文件夹下目录的个数

    ls -l | grep "^d" | wc -l
    
  3. 统计/home文件夹下文件的个数,包括子文件夹里的

    ls -lR | grep "^-" | wc -l
    
  4. 统计/home文件夹下目录的个数,包括子文件夹里的

    ls -lR | grep "^d" | wc -l
    
  5. 以树状显示home目录结构

    # 首先没有tree需要先安装
    yum install tree
    # 以树状显示home目录结构
    tree /home
    

16网络配置

①Linux网络配置原理图

1601199447230

②查看网络ip和网关

  • 可以修改虚拟机vmnet8虚拟网卡ip

1595582279833

  • 查看网关

1595582377247

③网络环境配置

  • 自动连接:Linux系统界面网络右键,编辑连接,选上自动连接。下次即可自动连接网络。

    这样有一个缺点:Linux启动后会自动获取ip,IP可能不一样,这样就不适用于做服务器!因为服务器ip是固定的!!

  • 指定固定的ip:

    修改配置文件来指定ip,并可以连接到外网。

    vim /etc/sysconfig/network-scripts/ifcfg-eth0	(eth0这块网卡的配置)
    

    在ifcfg-eth0这个文件内进行修改:

    # 1
    ONBOOT=yes
    # 2
    BOOTPROTO=static
    # 3IP地址
    IPADDR=192.168.255.1
    # 4网关
    GATEWAY=192.168.255.2
    # 5域名解析器(与网关ip一致)
    DNS1=192.168.255.2
    
    # 一般是需要修改1、2;需要添加3、4、5
    

④修改主机名

1595585199428

  • id 查看当前用户的id信息,组信息等
  • whoami 查看当前用户
  • who am i 查看登录的信息
  • hostname 查看主机名

/etc/sysconfig/network 这是主机名!可以在这可以修改主机名!

1595586086553

⑤主机映像文件

/etc/hosts 修改这个文件就能成功ping通了!!!

1595586132193

  • 比如说我现在的centos1的ip是192.168.255.132,此时我ping192.168.255.132可以ping通,但是我ping我的hostname为codejiwei就ping不通;我在/etc/hosts文件中添加192.168.255.132 codejiwei这个时候就可以ping通codejiwei了!!!

  • 而大数据中需要linux不同节点相互ping,所以在centos2中去ping192.168.255.132可以ping通,但codejiwei就ping不通了,这时候可以修改centos2的/etc/hosts文件,添加192.168.255.132 codejiwei 这个时候就可以ping通了!

  • window系统的这个文件路径在:C:\Windows\System32\drivers\etc\hosts

17进程管理

①基本介绍

  • 进程:每个执行的程序和代码都是一个进程
  • 进程分为前台和后台(守护进程)

②查看系统进程

  • ps 查看进程使用

    • -a显示当前终端的所有进程信息

    • -u以用户的格式显示进程信息

    • -x显示后台进程运行的参数

    • 一般都是用

      ps -aux | grep more		# 分页查看
      
      ps -aux | grep sshd		# 查看仅仅和sshd有关的进程
      

      1595587546450

    • 查看父进程ps -ef | more

③终止进程

  • kill [选项] 进程号(功能描述:通过进程号杀死进程 -9 强制终止)
  • killall 进程名称(功能描述:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用)

④最佳案例

  • 案例1:踢掉某个非法登录用户【jack】

    远程登录jack,此时用ps -aux | grep sshd 查看有关远程登陆的进程,然后kill [进程号]终止进程

    1595588421444

  • 案例2: 终止远程登录服务sshd, 在适当时候再次重启sshd服务

    1596081249353

  • 案例3: 终止多个gedit 编辑器

    killall gedit

  • 案例4:强制杀掉一个终端 对于 bash

    kill -9 对应的bash的进程号

⑤进程树

  • pstree
    • -p :显示进程的PID
    • -u :显示进程的所属用户

18服务管理

### ①概念

服务(Service)本身就是进程,但是是运行在后台的,通常会监听某个端口,等待其他程序的请求,比如:mysql,sshd,防火墙等,又被成为守护进程。

  • 查看服务的几种方式:

    • setup

      1595662249435

    • ll /etc/init

      1595662335190

    • 还有就是下面说的chkconfig --list

②service指令

  • service 服务名 [start | stop | restart | reload | status]

  • 在CentOS7.0以后就不再使用service了,而是systemctl

  • 案例:查看当前防火墙的状态,关闭防火墙和重启防火墙

    查看:service iptables status

    1595661729376
    关闭:service iptables stop

    开启:service iptables start

  • 这种方式修改服务,只是临时有效,重启后还是回到原来状态;如果要永久有效使用chkconfig命令

③chkconfig指令

  • 可以给每个服务的各个运行级别设置自启动\关闭

  • 语法:1. chkconfig --list | grep xxx

    1595662092148

    1595662456486

    ​ 2. chkconfig 服务名 --list1595662490550

    ​ 3. chkconfig --level 5 服务名 on/off

    ​ 4. chkconfig 服务名 on/off

  • 应用实例:

    1. 案例1:请显示当前系统所有服务的各个运行级别的状态

      chkconfig --list
      
    2. 案例2:请查看sshd服务的运行状态

      chkconfig sshd --list
      
      chkconfig --list | grep sshd
      
    3. 案例3:将sshd服务在运行级别5下设置为不自动启动

      chkconfig --level 5 sshd off
      
    4. 案例4:当运行级别为5时,关闭防火墙

      chkconfig --level 5 iptables off
      
    5. 案例5:在所有运行级别下,关闭防火墙

      chkconfig iptables off
      
      chkconfig iptables on
      
  • chkconfig重新设置后需要重启后才能生效!

19进程监控

①动态监控进程

  • top [选项]

    1596081307581

    ​ -k 杀死指定PID号的进程

  • 交互操作

    • P 以CPU使用率排序
    • M 以内存使用率排序
  • 应用实例:

    • 案例1:查看指定用户的进程

      top
      	然后输入u
      	然后输入root
      
    • 案例2:终止指定的进程

      top
      	然后输入k
      	然后输入PID进程号
      
    • 案例3:指定进程刷新时间10秒

      top -d 10
      

②监控网络状态

  • 查看网络使用情况netstat

  • 语法:netstat [选项]

    • -an 按一定顺序排列输出

      -p 显示哪个进程在调用

  • 应用案例

    请查看服务名为 sshd 的服务的信息。

    Ø Netstat –anp | grep sshd

    Ø 如果我们希望查看当前系统有哪些端口在监听

    netstat -tlnp

20软件包管理

①rpm包管理

  • redHat package manger

  • rpm包的简单查询指令

    查询已安装的rpm列表:rpm -qa|grep xx

    • 查看当前有没有安装火狐浏览器:

      1595664787938

    • 查询所有rpm包

      rpm -qa

    • 查询软件信息

      rpm -qi firefox

  • 删除软件包

    rpm -e firefox

  • 安装软件包

    • 包放在了/media/目录下

    • 复制/media下的火狐到/opt目录

    • 到/opt/目录下,安装rpm -ivh firefox-。。。。

②yum包管理

  • 可以自动自动处理依赖关系,一次性安装所有依赖包。前提需要联网!

  • 查询安装软件:

    yum list |greo 软件包

    1595665380482

  • 安装软件

    yum install 软件包

  • 卸载软件

    yum remove 软件包

21企业面试题

①百度面试题

  • 常用命令:

    netstat,top,lsblk,find,ps,chkconfig

②瓜子二手车面试题

  • 查看Linux内存:top
  • 磁盘存储:df -lh
  • 端口占用:netstat -tunlp
  • io读写占用:
    • 首先安装iotop:yum -install iotop
    • 然后输入:iotop
  • 进程:ps

netstat -anp|grep 80 :80端口的使用状况

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

最佳第六六六人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值