Linux系统内核与Linux发行套件系统。
Linux系统内核指的是提供硬件抽象层、硬盘及文件系统控制及多任务功能的系统核心程序。
Linux发行套件系统是我们常说的Linux操作系统,也即是由Linux内核与各种常用软件的集合产品。常见的有:
1、红帽企业版Linux(RHEL)
2、社区企业操作系统CentOS(把RHEL系统重新编译,免费使用的Linux系统。CentOS当前已被Red Hat公司收编)
3、Fedora:由红帽公司发布的桌面版系统套件。用户可免费体验到最新的技术或工具,这些技术或工具在成熟后会被加入到RHEL系统中,若想要掌握最新的技术和动态,应该多关注它。
4、openSUSE:源自德国的一款著名的Linux系统。
5、Debian:稳定性、安全性强,提供了免费的基础支持,在国外拥有很高的认可度和使用率。
6、Ubuntu:是一款派生自Debian的操作系统,对新款硬件具有极强的兼容能力。
基础篇
破解root密码
1、重启Linux系统主机并出现引导界面时,按下键盘上的e键进入内核编辑界面。
2、在linux参数这行的最后面追加“rd.break”参数,然后按下Ctrl + X。
3、依次输入以下命令:
mount -o remount,rw /sysroot
chroot /sysroot
passwd (然后输两次新密码) echo “123456” | passwd - -stdin root
touch /.autorelabel
exit
reboot
Shell以及bash解释器
Shell是一个命令行工具,是系统的用户界面 也称终端。充当的是人与内核(硬件)之间沟通的桥梁,收到用户命令后会调用相应的程序服务去完成某些任务。很多主流Linux系统默认使用的终端是 Bash解释器。
常用系统命令
echo 命令用于在终端输出字符串或变量提取后的值。
例:
date 命令用于显示及设置系统的时间或日期。相关参数如下:
参数 | 作用 |
%Y | 年 |
%m | 月 |
%d | 日 |
%H | 小时(24小时制) |
%I | 小时(12小时制) |
%M | 分钟 |
%S | 秒 |
%j | 今年中的第几天 |
%t | 跳格(Tab键) |
-s | 设置时间 |
%R | 显示当前时间 |
%x | 显示当前日期 |
%n | 换行 |
例:
reboot 命令用于重启系统,默认只有root管理员能使用reboot命令直接重启系统。
poweroff 命令用于关闭系统,同样默认只有root管理员能使用此命令直接关闭系统。
wget 命令用于在终端中下载网络文件。相关参数如下:
参数 | 作用 |
-b | 后台下载 |
-P | 下载到指定目录 |
-t | 最大尝试次数 |
-c | 断点续传 |
-p | 下载页面内所有资源,包括图片、视频等 |
-r | 递归下载 |
-O | 修改文件名 |
例:直接在linux系统中下载QQ。
# wget http://nginx.org/download/nginx-1.2.9.tar.gz 下载nginx
ps 命令用于查看系统中的进程状态,有5种常见的进程状态,R(运行)、S(中断)、 D(不可中断)、Z(僵死)、T(停止),相关参数如下:
参数 | 作用 |
-a | 显示所有进程(包括其他用户的进程) |
-u | 用户以及其他详细信息 |
-x | 显示没有控制终端的进程 |
执行#p
执行#ps -aux / ps -aux / ps -ef命令后会显示出很多进程状态,相关释义如下:
USER | PID | %CPU | %MEM | VSZ | RSS | TTY | STAT | START | TIME | COMMAND |
进程的所有者 | 进程ID号 | CPU占用率 | 内存占用率 | 虚拟内存使用量(KB) | 占用的固定内存量(KB) | 所在终端 | 进程 状态 | 被启动 的时间 | 实际使用 | 命令名称与参数 |
top 命令用
top 命令用于动态地监视进程活动与系统负载等信息。执行top命令后会显示出很多信息, 类似于Windows中的控制台,前5行释义如下:
第1行:系统时间、运行时间、登录终端数、系统负载(三个数值分别为1分钟、5分钟、 15分钟内的平均值,数值越小,负载越低)。
第2行:进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程数。
第3行:用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分 比、空闲的资源百分比等。
第4行:物理内存总量、内存使用量、内存空闲量、作为内核缓存的内存量。
第5行:虚拟内存总量、虚拟内存使用量、虚拟内存空闲量、已被提前加载的内存量。
uptime 用于查看系统的负载信息,可以看做是top命令只取第一行。同样的,负载越低 越好,最好不要长期超过1,生产环境不要超过5。
查看系统CPU型号
[root@localhost /]# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 142
model name : Intel(R) Core(TM) i5-10210U CPU @ 1.60GHz
stepping : 12
[root@yinhe ~]# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.2 (Ootpa)
free 用于显示当前系统中内存的使用量信息,-m和-h是常用的两个参数,可以指定以M 或者以G为单位显示相关信息。
pidof 命令用于查询某个指定服务进程的PID值,每个进程的进程号码值(PID)是唯一的。
例、查询sshd服务的PID。
kill 命令用于终止某个指定PID的服务进程。
例、使用kill命令杀掉sshd,杀掉该进程后,再次用pidof查询它的PID,已无任何显示。
Killall 命令用于终止某个指定名称的服务所对应的全部进程,某些软件会有多个进程协同工 作以提供服务,逐个结束比较麻烦,可以使用killall命令一次性全部结束。
例、使用pidof命令查询httpd服务的相关进程PID,然后使用killall一次性全部结束。
(httpd需要单独安装,不会安装的同学暂时不用着急,后续课程会重点讲解。)
ifconfig 命令用于获取网卡配置与网络状态等信息。主要信息为网卡名称、inet后面的IP地 址、ether后面的网卡物理地址(又称为MAC地址)等,DNS默认配置文件:
/etc/resolv.conf。
Ping
uname 命令用于查看系统内核与系统版本等信息,一般会加上-a参数来完整地查看当前系统 的内核名称、主机名、内核发行版本、系统时间、硬件名称、硬件平台、处理器类型 以及操作系统名称等信息。(cat /etc/redhat-release,执行此命令可以查看当前系统 版本的详细信息)
history 命令用于显示历史执行过的命令,执行history命令默认能显示出当前用户在本地计算机中执行过的最近1000条命令记录,使用-c参数则会清空所有的命令历史记录。还可以使用“!编码数字”的方式来重复执行某一次的命令。
例、
w 命令用于显示已经登陆系统的用户列表,并显示用户正在执行的指令。可得知目前登入系 统的用户信息和他们正在执行的程序。单独执行w命令会显示所有的用户,您也可指定用 户名称,仅显示某位用户的相关信息。
who 用于查看当前登入主机的用户终端信息。
last 命令用于查看所有系统的登录记录。
sosreport 命令用于收集系统配置及架构信息并输出诊断文档。
示例:[root@Mylinux ~]# sosreport
sosreport (version 3.4)
No changes will be made to system configuration.
Press ENTER to continue, or CTRL-C to quit. #此处敲击回车来确认收集信息
Please enter your first initial and last name [Mylinux]: #此处敲击回车来确认主机编号
Please enter the case id that you are generating this report for []: #此处敲击回车来确认主机编号
Setting up archive ...
Setting up plugins ...
Running plugins. Please wait ...
Running 97/97: yum... ...
Creating compressed archive...
Your sosreport has been generated and saved in:
/var/tmp/sosreport-Mylinux-20191031224315.tar.xz
The checksum is: a2a7d83d778d377d0af8acf66d385512
Please send this file to your support representative.
最终文件保存在:/var/tmp/目录下,文件名是:sosreport-Mylinux-20191031224315.tar.xz
服务管理 ---firewalld.service
启动/停止/重启服务
systemctl [start|stop|restart] [servicename]
重新加载服务配置文件(不重启服务)
systemctl [reload] [servicename]
查看服务状态
systemctl status [servicename]
设置/禁止服务开机自动启动
systemctl [enable|disable] [servicename]
查看服务是否是开机自动启动
systemctl is-enabled [servicename]
查看各个启动级别下服务的开机自动启动与禁用情况
systemctl list-unit-files
常用目录及文件管理命令
pwd 命令用于显示用户当前所处的工作目录。
cd 命令用于切换工作路径。可以使用“cd -”命令返回到上一次所处的目录,使用“cd ..”命 令进入上级目录,使用“ cd ~ ”命令切换到当前用户的家目录,使用“cd ~username”切换 到其他用户的家目录。
[root@yegg home]# cd ppp/
[root@yegg ppp]# pwd
/home/ppp
[root@yegg ppp]# cd ../yeye
[root@yegg yeye]# cd /root/nginx.tar.gz ./
ls 命令用于显示目录中的文件信息,所处的目录不同,当前目录下的文件也不同。使用 -a参数看到全部文件(包括隐藏文件),
-l参数可以查看文件的属性、大小等详细信 息(也可以直接用ll命令查看详细信息),
-d参数可以查看目录属性信息。不查看目录内容
-R 递归查询
-h 单位自动换算
ll 并不是linux下一个基本的命令,它实际上是ls -l的一个别名。 Ubuntu默认不支持命令ll,必须用 ls -l
touch 命令用于创建空白文件或设置文件的时间,-a仅修改“访问时间”(atime)
-m 仅修改“修改时间”(mtime),-d 同时修改atime与mtime。
例:创建一个空白文件,查看时间,再使用touch -d修改时间后再次查看。
Stat 查看文件属性
mkdir 命令用于创建空白的目录,除了创建单个文件夹之外,也还可以结合
-p参数来递 归创建出具有嵌套叠层关系的文件目录。
例:依次创建嵌套的文件夹1/2/3/4
[root@Mylinux Desktop]# mkdir -p 1/2/3/4
(注: 1/2/3/4和 / 1/2/3/4是不一样的,虽然区别只有一个“/”,但前者是在 当前目录创建,而后者的开头有了“/”,表示在根目录下创建)
cp 命令用于复制文件或目录。
(1)如果目标文件是目录,则会把源文件复制到该目录中;
(2)如果目标文件也是普通文件,则会询问是否要覆盖它;
(3)如果目标文件不存在,则执行正常的复制操作。
相关参数如下:
参数 | 作用 |
-p | 保留原始文件的属性 |
-d | 若对象为“链接文件”,则保留该“链接文件”的属性 |
-r | 递归持续复制(用于目录) |
-i | 若目标文件存在则询问是否覆盖 |
-a | 相当于-pdr(p、d、r为上述参数) |
mv 命令用于剪切文件或将文件重命名,剪切操作不同于复制,它会默认把源文件删除掉, 只保留剪切后的文件。如果在同一个目录中对一个文件进行剪切操作,实际上就是对 它重命名。 1,重命名 2,移动(剪切,粘贴)
rm 命令用于删除文件或目录,在Linux系统中删除文件时,系统会默认向您询问是否要 执行删除操作,可在rm命令后跟上-f参数来强制删除。若想要删除一个目录,需要加-r参数。
file 命令用于查看文件的类型,在Linux系统中,文本、目录、设备等都统称为文件,可 以使用file命令来查看文件类型。
例:
find 命令用于按照指定条件来查找文件,在Linux系统中,搜索工作一般都是通过find命令 来完成的,它可以使用不同的文件特性作为寻找条件(如文件名、大小、修改时间、权限等信息)。
参数 | 作用 |
-name | 匹配名称 |
-perm | 匹配权限(mode为完全匹配,-mode为包含即可) |
-user | 匹配所有者 |
-group | 匹配所有组 |
-mtime -n +n | 匹配修改内容的时间(-n指n天以内,+n指n天以前) |
-atime -n +n | 匹配访问文件的时间(-n指n天以内,+n指n天以前) |
-ctime -n +n | 匹配修改文件权限的时间(-n指n天以内,+n指n天以前) |
-nouser | 匹配无所有者的文件 |
-nogroup | 匹配无所有组的文件 |
-newer f1 !f2 | 匹配比文件f1新但比f2旧的文件 |
-type b/d/c/p/l/f | 匹配文件类型(后面的字母参数依次表示块设备、目录、字符设备、管道、链接文件、文本文件) |
-size | 匹配文件的大小(+50KB为查找超过50KB的文件,而-50KB为查找小于50KB的文件) |
-prune | 忽略某个目录 |
-exec …… {}\; | 后面可跟用于进一步处理搜索结果的命令(下文会有演示) |
例1:在根目录下查找所有者是mylinux的文件。
[root@Mylinux ~]# find / -user mylinux
例2:在根目录下查找名字是test.txt的文件。
例3:在根目录下查找所有者是mylinux的文件并复制到test目录下。
[root@mylinux test]# mkdir -p /root/Desktop/test
[root@mylinux test]# find / -user mylinux -exec cp -a {} /root/Desktop/test \;
du 统计文件或目录占用磁盘的大小
-a 显示所有目录或文件的大小 -b以byte为单位,显示目录或文件的大小
-c 显示目录或文件的总和 -k 以KB为单位输出
-m 以MB为单位输出 -s 仅显示目录或文件的总计数值 -h 以K,M,G为单位,提高信息可读性
案例
# dd if=/dev/zero of=hh bs=100M count=1 创建大文件
[root@localhost ~]# du hh
102400 hh
[root@localhost ~]# du -sh hh
100M hh
储存结构
在linux系统中,一切都是文件,包括目录、储存设备、打印机等都被抽象成了文件,而这一切都是从“根(/)”目录开始的。文件储存结构和最常见的目录以及所对应的存放内容如下所示:
目录名称 | 应放置文件的内容 |
/boot | 开机所需文件—内核、开机菜单以及所需配置文件等 |
/dev | 以文件形式存放任何设备与接口 |
/etc | 配置文件 |
/home | 普通用户家目录 |
/bin | 存放单用户模式下还可以操作的命令 |
/lib | 开机时用到的函数库,以及/bin与/sbin下面的命令要调用的函数 |
/sbin | 开机过程中需要的命令 |
/media | 用于挂载设备文件的目录 |
/opt | 放置第三方的软件 |
/root | 系统管理员的家目录 |
/srv | 一些网络服务的数据文件目录 |
/tmp | 任何人均可使用的“共享”临时目录 |
/proc | 虚拟文件系统,例如系统内核、进程、外部设备及网络状态等 |
/usr/local | 用户自行安装的软件 |
/usr/sbin | Linux系统开机时不会使用到的软件/命令/脚本 |
/usr/share | 帮助与说明文件,也可放置共享文件 |
/var | 主要存放经常变化的文件,如日志 |
/lost+found | 当文件系统发生错误时,将一些丢失的文件片段存放在这里 |