linux就该这么学-Day-01

扩展:VMware虚拟机的三种网络模式:

        ➢ 桥接模式:相当于在物理主机与虚拟机网卡之间架设了一座桥梁,从而可以通过物理

主机的网卡访问外网。

        ➢ NAT模式:让 VM 虚拟机的网络服务发挥路由器的作用,使得通过虚拟机软件模拟

的主机可以通过物理主机访问外网,在真机中 NAT 虚拟机网卡对应的物理网卡是VMnet8。

        ➢ 仅主机模式:仅让虚拟机内的主机与物理主机通信,不能访问外网,在真机中仅主机

模式模拟网卡对应的物理网卡是 VMnet1。

 

修改root密码:挽救模式

        启动虚拟机--->进入linux系统引导界面,按下键盘“e”--->进入内核编辑界面--->在linux参数这行的后

面(.UTF-8)追加“rd.break”参数--->按下组合键Ctrl+x运行修改过的内核程序--->进入到紧急救援模式

并输入一下命令:mount -o remount,rw /sysroot

                                chroot /sysroot

                                passwd

                                touch /.autorelabel

                                exit

                                reboot 重启即可

 

1.1 RPM红帽软件包管理器

        rpm -ivh filename.rpm //安装软件

        rpm -Uvh filename.rpm //升级软件

        rpm -e filename.rpm //卸载软件

        rpm -qpi filename.rpm //查询软件描述信息

        rpm -qpl filename.rpm //列出软件文件信息

        rpm -qf filename.rpm //查询文件属于哪个RPM

        rpm -qa | grep filename //查询filename软件包

 

1.2 Yum软件仓库

        yum repolist all //列出所有的仓库

        yum list all //列出仓库中的所有软件包

        yum info 软件包 //查询软件包信息

        yum install 软件包 //安装

        yum reinstall 软件包 //重新安装

        yum update 软件包 //更新软件包

        yum remove 软件包 //移除软件包

        yum clean all //清除Yum仓库缓存

        yum check-update //检查课更新的软件包

        yum grouplist //查询系统中已经安装的软件组

        yum groupinstall 软件包组 //安装指定软件包组

        yum groupremove 软件包组 //移除指定软件包组

        yum groupinfo 软件包组 //查询指定的软件包组信息

 

1.3 systemd初始化进程

                Linux 操作系统的开机过程,即从 BIOS 开始,然后进入 Boot Loader,再加

载系统内核,然后内核进行初始化,最后启动初始化进程。初始化进程作为 Linux 系统的

第一个进程,它需要完成 Linux 系统中相关的初始化工作,为用户提供合适的工作环境。

 

 

 

 

 

复习题:

1. 为什么建议读者校验下载的系统镜像或工具?

答:为了检查软件包的安全与完整性。

2. 使用虚拟机安装linux系统时,为什么要先选择稍后安装操作系统,而不是选择RHEL 7系统镜像光盘?

答:直接选用RHEL 7 系统镜像,虚拟机VMware Workstation会使用内置的安装向导自动进行安装,安装出来的系统和进行实验系统环境有所不同。

3. RPM(红帽软件包管理器)只有企业系统在使用,对吗?

答:错误。RPM被众多linux系统所采用,包括CentOS、Fedora、opensuse等。

4. 简述RPM与Yum 软件仓库的作用。

答:rpm是为了简化安装的复杂度;

yum软件仓库是为了解决软件包之间的依赖关系。

5.RHEL 7 系统采用了systemd作为初始化进程,那么如何查看某个服务的运行状态?

答:运用命令:systemctl status 服务名称 即可查看服务运行状态。

 

新手必须掌握的Linux命令

2.1 强大的好用的shell

        计算机基础知识:计算机硬件是由运算器、控制器、存储器、输入\输出设备组成的,而各让种硬件设备各司其职且又能协同运行的东西就是系统内核。Linux 系统的内核负责完成对硬件资源的分配、调度等管理任务。

        shell 是一个令行工具。shell(终端或壳)充当人与内核(硬件)之间的翻译官,用户把命令告诉终端,shell会调用相应的程序服务去完成某些工作。现在红帽系统主流的Linux系统默认使用的是Bash(Bourne-Again SHell)解释器。主流解释器优势:

➢ 通过上下方向键来调取过往执行过的 Linux 命令;

➢ 命令或参数仅需输入前几位就可以用 Tab 键补全;

➢ 具有强大的批处理脚本;

➢ 具有实用的环境变量功能。

 

2.2 查看帮助命令 man

        man命令常用按键以及用途

2.3 常用系统工作命令

        1. echo 命令

        用于在终端上输出字符串或变量提取后的值,格式"echo [字符串 | $变量]"

        [root@wen ~]# echo nebula

        nebula

        [root@wen ~]# echo $SHELL --------------->$变量的方式提取变量 SHELL 的值

        /bin/bash

        2. date 命令 date [选项] [+指定格式]

 

        实例:

        设置当前系统时间,格式为[MMDDhhmm[[CC]YY][.ss]]

        [root@wen ~]# date -s

        还可设置指定时间、指定格式:date -s "20170901 8:30:00"

 

        按照年月日时分秒格式查看当前时间:

        [root@wen ~]# date "+%Y-%m-%d %H:%M:%S"

        2018-08-13 17:13:13

 

        查看今天是今年中的第几天:[root@wen ~]# date "+%j"

 

        3. reboot命令 重启系统

        4. poweroff 关闭系统

        5. wget命令

        wget 命令用于在终端中下载网络文件,格式为“wget [参数] 下载地址”。

        实例:wget http://www.baidu.com

 

        6. ps 命令 查看系统中的进程状态 格式 ps [参数]

        -a //显示左右的进程(包括其他用户进程)

        -u //用户以及其他详细信息

        -x //显示没有控制的终端的进程

 

        5种进程状态:运行、中断、不可中断、僵死、停止

        ➢ R(运行):进程正在运行或在运行队列中等待。

        ➢ S(中断):进程处于休眠中,当某个条件形成后或者接收到信号时, 则脱离该状态。

        ➢ D(不可中断):进程不响应系统异步信号,用 kill 命令也不能将其中断。

        ➢ Z(僵死):进程已经终止,但进程描述符依然存在, 直到父进程调用wait4()系统函数后将进程释放。

        ➢ T(停止):进程收到停止信号后停止运行。

 

      7. top命令

        top命令用于动态监视进程活动与系统负载等信息;动态查看运维状态。

 

        ➢ 第 1 行:系统时间、运行时间、登录终端数、系统负载(三个数值分别为 1 分钟、5

分钟、15 分钟内的平均值,数值越小意味着负载越低)。

        ➢ 第 2 行:进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程数。

        ➢ 第 3 行:用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比等。数据为CPU数据以格式显示99.7 id,表示99.7%的CPU处理器资源空闲

➢ 第 4 行:物理内存总量、内存使用量、内存空闲量、作为内核缓存的内存量。

➢ 第 5 行:虚拟内存总量、虚拟内存使用量、虚拟内存空闲量、已被提前加载的内存量。

 

8. pidof 命令

pidof 命令用于查询某个指定服务进程的 PID 值,格式为“pidof [参数] [服务名称]”。

每个进程的进程号码值(PID)是唯一的,因此可以通过 PID 来区分不同的进程。

实例:查询sshd服务程序的PID : pidof sshd

 

9. kill 命令

kill 命令用于终止某个指定 PID 的服务进程,格式为“kill [参数] [进程 PID]”。

kill -9 服务 ----强制杀掉进程

 

10. killall 命令

killall 命令终止某个指定名称的服务所对应的全部进程,格式为:“killall [参数] [服务名称]”。

 

2.4系统状态检测命令

1. ifconfig 命令

ifconfig 命令用于获取网卡配置(网卡、IP、MAC)与网络状态等信息。

 

2. uname命令

uname 命令用于查看系统内核与系统版本等信息,格式为“uname [-a]”。

查看当前系统版本的详细信息,则需要查看 redhat-release 文件:

cat /etc/redhat-release

 

3. uptime命令

uptime 用于查看系统的负载信息,格式为 uptime。

uptime 命令可以显示当前系统时间、系统已运行时间、启用终端数量以及平均负载值等信息。平均负载值指的是系统在最近 1 分钟、5 分钟、15 分钟内的压力情况(下面加粗的信息部分);负载值越低越好,尽量不要长期超过 1,在生产环境中不要超过 5。

[root@wen ~]# uptime

18:12:05 up 14:32, 2 users, load average: 0.03, 0.03, 0.05

 

4. free命令

free 用于显示当前系统中内存的使用量信息,格式为“free [-h]”。

 

5.who命令

who 用于查看当前登入主机的用户终端信息,格式为“who [参数]”。

 

6. last命令

last 命令用于查看所有系统的登录记录,格式为“last [参数]”。

 

7. history 命令

history 命令用于显示历史执行过的命令,格式为“history [-c]”

历史命令保存在.bash_history文件中:cat ~/.bash_history

清空历史记录:history -c

 

查询历史命令的时间:

第一种:export HIETTEIMEFORMAT | history

第二种:编辑/etc/profile文件,在里面加入下面内容(我一般习惯在最末尾加):

export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S "

 

8.sosreport命令

sosreport 命令用于收集系统配置及架构信息并输出诊断文档,格式为 sosreport。

 

2.5 工作目录切换命令

1.pwd 命令

pwd 命令用于显示用户当前所处的工作目录,格式为“pwd [选项]”。

 

2. cd命令

cd 命令用于切换工作路径,格式为“cd [目录名称]”。

 

3.ls 命令

-a:查看全部文件(包括隐藏文件)

-l:查看文件属性、大小等详细信息

d:文件类型 d b c l s p

-:普通文件

d:目录文件

b:块设备文件(block)

c:字符设备文件(character)

l:符号链接文件(symbolic link file)

p:命令管道文件(pipe)

s:套接字文件(socket)

2.6 文本文件编辑命令

1. cat命令

cat 命令用于查看纯文本文件(内容较少的),格式为“cat [选项] [文件]”

2. more命令

more 命令用于查看纯文本文件(内容较多的),格式为“more [选项]文件”。

3. head命令

head 命令用于查看纯文本文档的前 N 行,格式为“head [选项] [文件]”。

4. tail命令

tail 命令用于查看纯文本文档的后 N 行或持续刷新内容,格式为“tail [选项] [文件]”。

5. tr 命令

tr 命令用于替换文本文件中的字符,格式为“tr [原始字符] [目标字符]”。

实例:more /etc/passwd | tr [tom] [job]-----将文件中的tom换为job

6. wc 命令

wc 命令用于统计指定文本的行数、字数、字节数,格式为“wc [参数] 文本”。

-l //只显示行数

-w //只显示单词数

-c //只显示字节数

7.stat 命令

stat 命令用于查看文件的具体存储信息和时间等信息,格式为“stat 文件名称”

三种时间状态:Access、Modify、Change

8. cut 命令

cut 命令用于按“列”提取文本字符,格式为“cut [参数] 文本”

提取/etc/passwd文件中第一列:cut -d: -f1 /etc/passwd

-f 参数来设置需要看的列数,使用-d 参数来设置间隔符号

9. fiff命令

diff 命令用于比较多个文本文件的差异,格式为“diff [参数] 文件”

diff --brief diff_A.txt diff_B.txt //显示diff_A和diff_B文件是否相同

diff -c diff_A.txt diff_B.txt //描述文件中具体的不同

 

2.7 文件目录管理命令

1. touch 命令

touch 命令用于创建空白文件或设置文件的时间,格式为“touch [选项] [文件]”

-a 仅修改“读取时间”(atime)

-m 仅修改“修改时间”(mtime)

-d 同时修改 atime 和 mtime

[root@linuxprobe ~]# ls -l anaconda-ks.cfg

-rw-------. 1 root root 1213 May 4 15:44 anaconda-ks.cfg

[root@linuxprobe ~]# echo "Visit the LinuxProbe.com to learn linux skills" >>

anaconda-ks.cfg

[root@linuxprobe ~]# ls -l anaconda-ks.cfg

-rw-------. 1 root root 1260 Aug 2 01:26 anaconda-ks.cfg

[root@linuxprobe ~]# touch -d "2017-05-04 15:44" anaconda-ks.cfg

修改后的文件时间设置成修改之前的时间:

[root@linuxprobe ~]# ls -l anaconda-ks.cfg

-rw-------. 1 root root 1260 May 4 15:44 anaconda-ks.cfg

 

2. mkdir 命令

mkdir 命令用于创建空白的目录,格式为“mkdir [选项] 目录”

 

3. cp 命令

cp 命令用于复制文件或目录,格式为“cp [选项] 源文件 目标文件”

复制操作的三种情况:

➢ 如果目标文件是目录,则会把源文件复制到该目录中;

➢ 如果目标文件也是普通文件,则会询问是否要覆盖它;

➢ 如果目标文件不存在,则执行正常的复制操作。

cp命令参数及作用:

-p 保留原始文件的属性

-d 若对象为“链接文件”,则保留该“链接文件”的属性

-r 递归持续复制(用于目录)

-i 若目标文件存在则询问是否覆盖

-a 相当于-pdr(p、d、r 为上述参数)

 

4. mv 命令

mv 命令用于剪切文件或将文件重命名,格式为“mv [选项] 源文件 [目标路径|目标文件名]

 

5. rm 命令

rm 命令用于删除文件或目录,格式为“rm [选项] 文件”

-f 递归删除

 

6. dd 命令

dd 命令用于按照指定大小和个数的数据块来复制文件或转换文件,格式为“dd [参数]”。

if 输入的文件名称

of 输出的文件名称

bs 设置每个“块”的大小

count 设置要复制“块”的个数

 

dd if=/dev/zero of=560_file count=1 bs=560M //从/dev/zero 设备文件中取出一个大小为 560MB 的数据块,然后保存成名为 560_file 的文件

dd if=/dev/cdrom of=RHEL-server-7.0-x86_64-LinuxProbe.Com.iso //将光驱设备中的光盘制作成ISO格式的镜像文件

 

7. file命令

file 命令用于查看文件的类型,格式为“file 文件名”

 

2.8 打包压缩与搜索命令

1. tar 命令

tar 命令用于对文件进行打包压缩或解压,格式为“tar [选项] [文件]”

tar命令参数及作用

-c 创建压缩文件

-x 解开压缩文件

-t 查看压缩包内有哪些文件

-z 用 Gzip 压缩或解压

-j 用 bzip2 压缩或解压

-v 显示压缩或解压的过程

-f 目标文件名--------->它必须放到参数的最后一位,代表要压缩或解压的软件包名称

-p 保留原始的权限与属性

-P 使用绝对路径来压缩

-C 指定解压到的目录

tar -czvf etc.tar.gz /etc //将/etc目录文件打包压缩并重命名为etc.tar.gz

tar xvf etc.tar.gz -C /root/etc //将压缩文件etc.tar.gz解压到 /etc目录中

 

2. grep 命令

grep 命令用于在文本中执行关键词搜索,并显示匹配的结果,格式为“grep [选项] [文件]”

grep 命令参数及其作用

-b 将可执行文件(binary)当作文本文件(text)来搜索

-c 仅显示找到的行数

-i 忽略大小写

-n 显示行号

-v 反向选择 — 仅列出没有“关键词”的行

3. find 命令

语法是 find [option] [path...] [expression] [action]

以下的操作都是在root用户权限下做的

1、按照文件名查找

find / -name ifcfg-ens32

find /etc /home /dev -name ifcfg-ens32 find后面可以跟多个路径

find /etc -iname "*cfg*" 当我们名字不确定的时候就可以使用通配符,-iname 是忽略字母大小写

2、按照文件大小查找

find /etc -size +5M -ls 超过5M的文件

find /etc -size 5M

find /etc -size -5M -print print可加可不加,默认的动作是print,

后面跟的动作和我们的 ls 不一样

3、指定查找的目录深度

find /etc -maxdepth 1 -iname "ifcfg-ens32" 目录最大深度为1并且名字为ifcfg-ens32,这是两个条件,关系为且

4、按照时间查找文件(atime mtime ctime)

atime 访问过的时间

mtime文件内容发生变化的时间

ctime文件权限更改的时间

find /etc -mtime +300 -ls 查找内容修改时间超过300天的文件

find /etc -mtime -1 -ls 一天以内的文件

find /etc -mtime 1 等于一天的 是按照24小时往前推的时间

5、按照文件的所有者查找

find /etc -user u1

find /ect -group hr

find /ect -user u1 -a -group hr(-a可有可无) 既是u1用户的又是属于hr组的文件

find /etc -user u1 -o -group hr 两者之间是或的关系

find /home -nouser

//查找没有所有者的文件,删除用户的时候userdel不会删除家目录,此时就是无所有者的文件

//没人管的文件比较恐怖,因为以后创建用户的时候uid如果一样的话,新建的这些用户就可以访问这些文件

6、按照文件类型查找

find /dev -type f (普通) -d(目录) -l(链接) -b(块设备) -c(字符设备) -s(套接字) -p(管道)

7、按照文件权限查找 permission

find .-perm 644 -ls 在当前目录下查找权限为644的文件 这种找法是很明确权限的情况下查找

find .-perm -644 -ls 我要求的时所有者是读写g和o是读,至于多出来的权限我不管

-633的时候是特殊情况

-4000

[root@tuo ~]# find /usr/bin /usr/sbin/ -perm -4000 -ls 查找出来的结果很多,说明当普通用户执行这些权限的时候都是以root身份来运行的

 

 

作业:

1.在RHEL 7系统及众多的Linux系统中,最常使用的Shell终端是什么?

答:Bash解释器

2.执行Linux系统命令时,添加参数的目的是什么?

答:为了让 Linux 系统命令能够更贴合用户的实际需求进行工作。

3.Linux系统命令、命令参数及命令对象之间,普遍应该使用什么来间隔?

答:普遍用空格间隔

4.请写出用echo命令把SHELL变量值输出到屏幕终端的命令。

答:echo $SHELL

5.简述Linux系统中5种进程的名称及含义。

答: R(运行):进程正在运行或在运行队列中等待。

S(中断):进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该状态。

D(不可中断):进程不响应系统异步信号,用 kill 命令也不能将其中断。

Z(僵死):进程已经终止,但进程描述符依然存在, 直到父进程调用 wait4()系统函数后将进程释放。

T(停止):进程收到停止信号后停止运行。

6.请尝试使用Linux系统命令关闭PID为5529的服务进程。

答:kill -9 5529 或者查询服务名称 killall 服务名称

7.使用ifconfig命令查看网络状态信息时,需要重点查看的4项信息分别是什么?

答:网卡名称;IP地址;MAC地址; RX/TX 的收发流量数据大小

8.使用uptime命令查看系统负载时,对应的负载数值如果是0.91、0.56、0.32,那么最近15

分钟内负载压力最大的是哪个时间段?

答:一分钟时间内的负载时最大的

9.使用history命令查看历史命令的执行记录时,命令前面的数字除了排序外还有什么用处?

答:执行“!序号”命令,可执行此命令

10.若想查看的文件具有较长的内容,那么使用cat、more、head、tail中的哪个命令最合适?

答:最合适的是more,文本较短的适合cat

11.在使用mkdir命令创建有嵌套关系的目录时,应该加上什么参数呢?

 答:mkdir -p -p递归迭代参数

12.在使用rm命令删除文件或目录时,可使用哪个参数来避免二次确认呢?

 答:rm -rf 使用-f参数避免二次确认

13.若有一个名为backup.tar.gz的压缩包文件,那么解压的命令应该是什么?

 答:tar -xzvf backup.tar.gz -x可解压不同类型文件

14.使用grep命令对某个文件进行关键词搜索时,若想要进行文件内容反选,应使用什么参

数?

答:grep -v 进行内容反选

 

 

 

你可能感兴趣的:(Linux就该这么学)