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

    科技2022-08-06  94

    作者:codejiwei

    日期:2020-09-28

    CentOS

    1 VM与Linux的安装

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

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

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

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

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

    点击安装VMware Tools

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

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


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

    网络配置方式:

    桥接模式

    好处是:大家都在同一网段,相互可以通讯缺点是:因为ip地址有限,可能造成ip冲突

    Nat网络地址转换模式

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

    主机模式

    单独的一台电脑

    2 远程登录软件

    Xshell5SecureCRT

    3 远程上传下载文件

    Xftp5FileZilla

    4Linux目录结构

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

    ①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 now1分钟后关机: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 用户组 用户名

    9用户和组的文件信息

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

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

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

    10运行级别

    ①运行级别说明

    0 :关机

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

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

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

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

    5:图形界面 【】

    6:系统重启

    ②查看当前的运行级别

    cat /etc/inittab

    ③指定运行级别

    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.txttouch 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/profiletail -f /etc/profile 实时追踪该文档的所有更新,工作中经常使用案例:实时监控info.txt文件,该文件有变化时,实时就能看到!

    ln 软连接、符号连接指令

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

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

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

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

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

    删除软连接:rm -r linkToRoot

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

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

    后10条指令

    执行历史编号为n的指令

    ③时间日期类

    date 显示当前日期和时间

    显示年月日:

    显示年月日时分秒

    设置日期

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

    date -s "2020-11-11 11:11:11"

    cal 显示当前日历

    显示一年的日历

    ④搜索查找类

    find 【搜索范围】 【选项】

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

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

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

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

    locate 快速定位文件路径

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

    第二部:查找hello.txt文件

    grep指令和管道符号|

    ⑤压缩解压缩

    gzip和gunzip

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

    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组管理和权限管理

    ①组管理

    文件详细信息

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

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

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

    修改文件所在组

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

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

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

    ②文件详细信息

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

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

    ③权限管理

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

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

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

    chown 新的文件所有者 文件名

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

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

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

    chgrp 新的组 文件名

    chgrp -R 新的组 目录名

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

    13crond任务调度

    ①任务调度(定时任务)

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

    crontab[选项]

    crontab -e 编辑crontab定时任务crontab -r 删除当前用户的所有crontab任务crontab -l 查询crontab任务

    任务调度文件:/etc/crontab

    参数说明:

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

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

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

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

    ​ 查看定时任务:

    案例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 查看系统的分区和挂载情况

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

    ③案例:添加新硬盘

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

    重启服务器reboot

    lsblk

    给sdb硬盘分区

    fdisk /dev/sdb

    分区:m查看命令列表

    ​ n 新增分区

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

    ​ 回车 默认全部剩余时间

    ​ w 写入并退出

    格式化sdb1

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

    挂载sdb1

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

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

    vim /etc/fstab

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

    umount /dev/sdb1

    15磁盘查询指令

    ①df命令

    查看整个磁盘的使用情况

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

    ②目录占用情况du指令

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

    du -h /目录

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

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

    -h 带计量单位

    -a 含文件

    –max-depth=1 子目录深度

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

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

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

    ③工作使用指令

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

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

    统计/home文件夹下目录的个数

    ls -l | grep "^d" | wc -l

    统计/home文件夹下文件的个数,包括子文件夹里的

    ls -lR | grep "^-" | wc -l

    统计/home文件夹下目录的个数,包括子文件夹里的

    ls -lR | grep "^d" | wc -l

    以树状显示home目录结构

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

    16网络配置

    ①Linux网络配置原理图

    ②查看网络ip和网关

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

    查看网关

    ③网络环境配置

    自动连接: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

    ④修改主机名

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

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

    ⑤主机映像文件

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

    比如说我现在的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有关的进程

    查看父进程ps -ef | more

    ③终止进程

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

    ④最佳案例

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

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

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

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

    killall gedit

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

    kill -9 对应的bash的进程号

    ⑤进程树

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

    18服务管理

    ### ①概念

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

    查看服务的几种方式:

    setup

    ll /etc/init

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

    ②service指令

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

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

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

    查看:service iptables status

    关闭:service iptables stop

    开启:service iptables start

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

    ③chkconfig指令

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

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

    ​ 2. chkconfig 服务名 --list

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

    ​ 4. chkconfig 服务名 on/off

    应用实例:

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

    chkconfig --list

    案例2:请查看sshd服务的运行状态

    chkconfig sshd --list chkconfig --list | grep sshd

    案例3:将sshd服务在运行级别5下设置为不自动启动

    chkconfig --level 5 sshd off

    案例4:当运行级别为5时,关闭防火墙

    chkconfig --level 5 iptables off

    案例5:在所有运行级别下,关闭防火墙

    chkconfig iptables off chkconfig iptables on

    chkconfig重新设置后需要重启后才能生效!

    19进程监控

    ①动态监控进程

    top [选项]

    ​ -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

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

    查询所有rpm包

    rpm -qa

    查询软件信息

    rpm -qi firefox

    删除软件包

    rpm -e firefox

    安装软件包

    包放在了/media/目录下

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

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

    ②yum包管理

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

    查询安装软件:

    yum list |greo 软件包

    安装软件

    yum install 软件包

    卸载软件

    yum remove 软件包

    21企业面试题

    ①百度面试题

    常用命令:

    netstat,top,lsblk,find,ps,chkconfig

    ②瓜子二手车面试题

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

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

    Processed: 0.010, SQL: 8