Linux-韩顺平

基础篇#

本套Linux课程内容

Linux分区一般分为:boot分区、交换分区和根分区。

虚拟系统安装好后,它的本质就是文件。

虚拟机克隆:如果你已经安装了一台liux操作系统,你还想再更多的,使用虚拟机克隆即可。方式1,直接拷贝一份安装好的虚拟机文件。然后在VM上点击打开对应的vmx文件即可。方式2,使用vmware的克隆操作,右键点击管理,后选择克隆即可。注意,克隆时,需要先关闭linux系统。

虚拟机快照:如果你在使用虚拟机系统的时候,你想回到原先的某个状态,也就是说你担心可能有些误操作造成系统异常,需要回到原先某个正常运行的状态,vmware也提供了这样的功能,就叫快照管理。

vmtools安装后可以让我们在Windows下更好的管理VM虚拟机,可以设置Windows和centos的共享文件夹。在设置中开启共享文件夹后,可以在主文件夹->其他位置->mnt->hgfs下找到该文件夹。

Windows和centos就可以共享文件了,但是在实际开发中,文件的上传下载是需要使用远程方式完成的。

使用tab键可以实现自动补全。

在Linux世界里,一切皆文件。

三种网络连接模式:桥接模式:虚拟系统可以和外部系统通讯,但是容易导致IP冲突。NAT模式:网络地址转换模式,虚拟系统可以和外部系统通讯,不造成IP冲突。主机模式:独立的系统,不与外部系统通讯。

使用ifconfig查看虚拟机的inet地址,然后使用xshell进行远程连接。

目录结构#

  1. /bin(usr/bin、/usr/local/bin) 是Binary的缩写,这个目录存放着最经常使用的命令。
  2. /sbin (/usr/sbin /usr/local/sbin) s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
  3. /home存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名。
  4. /root该目录为系统管理员,也称作超级权限者的用户主目录。
  5. /Iib系统开机所需要最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所 有的应用程序都需要用到这些共享库。
  6. /lost+found这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
  7. /etc所有的系统管理所需要的配置文件和子目录,比如安装mysq数据库my.conf
  8. /usr这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与windows下的program files目录。
  9. /boot存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
  10. /poc这个目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息。不能轻易修改,否则会导致系统崩溃。
  11. /srv service缩写,该目录存放一些服务启动之后需要提取的数据。
  12. /sys这是Iinux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs。
  13. /tmp这个目录是用来存放一些临时文件的。
  14. /dev 类似于windows的设备管理器,把所有的硬件用文件的形式存储。
  15. /media linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
  16. /mnt系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里的内容了。例如d:/myshare。
  17. /opt这是给主机额外安装软件所存放的目录。如安装ORACLE数据库就可放到该目录下。默认为空。
  18. /usr/Iocal这是另一个给主机额外安装软件所安装的目录。一般是通过编译源码方式安装的程序。
  19. /var这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下。包括各种日志文件。
  20. /selinux [security-enhanced linux] SELinux是一种安全子系统,它能控制程序只能访问特定文件,有三种工作模式,可以自行设置。

Linux实操篇#

vi和vim#

vi和vim的三种模式#

  1. 正常模式:以vim打开一个档案就直接进入一般模式(这是默认的,模式)。在这个模式中,你可以使用方向按键来移动光标,使用删除字符或删除整行来处理档案内容,也可以使用复制、粘贴来处理文件数据。
  2. 编辑模式:按下i、I、o、O、a、A、r、R等任何一个字母之后才会进入编辑模式,一般是按i。
  3. 命令行模式:输入esc后再输入:。在该模式下,可以提供相关指令完成读取、存盘、替换、离开vim、显示行号等动作。

vi和vim的三种模式

快捷键使用#

  1. 拷贝当前行yy,拷贝当前行向下的5行5yy,并粘贴(输入P)。 注意不要使用小键盘的数字,否则会进入编辑模式。
  2. 删除当前行dd,删除当前行向下的5行5dd。
  3. 在文件中查找某个单词[命令行下输入/关键字,回车查找,输入n就是查找下一个]
  4. 设置文件的行号,取消文件的行号。[命令行下:set nu和:set nonu) 。
  5. 编辑/etc/profile文件,在一般模式下使用快捷键到该文档的最末行[G]和最首行[gg]。注意是区分大小写的。
  6. 在一个文件中输入"hello”,然后又撤销这个动作u。
  7. 编辑/etc/profile文件,在一般模式下,并将光标移动到,输入20,再输入20行shift+g。

关机、重启和用户登录注销#

指令 作用
shutdown -h now 立刻关机
shutdown -h 1 1分钟后关机,shutdown默认结果
shutdown -r now 立即重启计算机
halt 关机
reboot 重启
sync 把内存中的数据同步到磁盘

不管是重启系统还是关闭系统,首先要运行sync命令,把内存中的数据写到磁盘中。目前的shutdown/reboot/halt等命令均已经在关机前进行了sync。

登录时尽量少用root帐号登录,因为它是系统管理员,拥有最大的权限,避免操作失误。可以利用 普通用户登录,登录后再用”su-用户名'命令来切换成系统管理员身份.。

在提示符下输入logout即可注销用户,logout注销指令在图形运行级别无效,在运行级别3下有效。

用户管理#

指令 作用
useradd milan 添加用户,默认该用户的家目录在/home/milan
useradd -d 指定目录 新用户名 给新创建的用户指定家目录
passwd 用户名 修改用户的密码
pwd 显示当前用户所在目录
userdel 用户名 删除用户,但保留用户主目录
userdel -r 用户名 删除用户及其主目录
id 用户名 查询用户信息
su - jack 切换到jack用户
who am i 查询第一次登录的用户名
whoami 显示当前操作的用户名

使用su切换用户时,从权限高的用户切换到权限低的用户,不需要输入密码,反之需要。当需要返回到原来用户时,使用exit/logout:指令。

在新建用户时,如果没有为其指定组,会默认创建一个与用户名同名的组,并进行绑定。

用户和组相关文件#

/etc/passwd文件:用户(user)的配置文件,记录用户的各种信息。每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell。

/etc/shadow文件:口令的配置文件。每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志。

/etc/group文件:组(group)的配置文件,记录Linux包含的组的信息。每行的含义:组名:口令:组标识号:组内用户列表。

实用指令#

文件目录类#

指令 作用
init [0123456] 切换不同的运行级别
systemctl get-default 查看当前运行级别
systemctl set-default [multi-user.target,graphical.target] 前者类似运行级别3,后者类似运行级别5
man [命令或配置文件] 功能描述,获得帮助信息,使用空格键可以往下翻
help 获得shell内置命令的帮助信息
pwd 显示当前工作目录的绝对路径
ls [选项] [目录或文件] -a:显示当前目录的所有文件和目录,包括隐藏的。-l:以列表的方式显示信息
cd ~ 回到自己的家目录
cd .. 回到当前目录的上一级目录
mkdir 目录名 创建目录,-p创建多级目录
rmdir 目录名 删除空目录
rm 目录名 移除文件或目录,-r:递归删除整个文件夹,-f:强制删除不提示
touch 文件名称 创建空文件
cp 要复制的文件名或文件夹 目录名 拷贝文件到指定目录,-r:递归复制整个文件夹,\cp是强制覆盖不提示
mv oldName newName 重命名文件
mv /temp/movefile /targetFolder 移动文件与目录
cat 文件名 查看文件内容,-n:显示行号
echo 输出内容 输出内容到控制台
head -n 5 文件名 查看文件开头5行
tail 文件名 输出文件尾部的内容默认显示前10行;-n:指定行数;-f:实时追踪该文档的所有更新。使用-f时可以使用ctrl+C退出浏览。
ln -s 原文件或目录 软链接名 给原文件创建一个软链接,相当于快捷方式
history 查看历史命令

基本介绍运行级别说明:0:关机;1:单用户,可以用来找回丢失密码; 2:多用户状态没有网络服务;3:多用户状态有网络服务;4:系统未使用保留给用户;5:图形界面 6:系统重启。常用运行级别是3和5,也可以指定默认运行级别。

在Linux中,隐藏文件是以"."开头。

cat只能浏览文件,而不能修改文件,为了浏览方便,通常加上管道命令 | more。

>输出重定向和>>追加指令,重定向是改变默认的输出位置。

more指令交互

指令 作用
空白键(space) 向下翻一页
Enter 向下翻一行
q 立即离开more,不再显示该文件内容
Ctrl+F 向下翻动一屏
Ctrl+B 返回上一屏
= 输出当前行的行号
:f 输出文件名和当前行的行号

less指令交互

less指令用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强大,支持各种显示终端。Iess指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。

指令 作用
空白键 向下翻动一页
pagedown 向下翻动一页
pageup 向上翻动一页
/字符串 搜寻子串;n:向下查找;N:向上查找
?字符串 搜寻子串;n:向上查找;N:向下查找
q 离开less程序

时间日期类#

指令 作用
date 显示当前日期
date -s 字符串时间 设置系统时间
cal 查看日历

搜索查找类#

指令 作用
find 搜索范围 选项 从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端。有name、user和size三种查找选项。
locate 搜索文件 快速定位文件路径
which 可以查看指令的路径
grep 选项 查找内容 源文件 过滤查找。-n:显示匹配行及行号;-i:忽略字母大小写

locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。Locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locatel数据库。由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库。

管道符号“|”,表示将前一个指令的处理结果输出传递给后面的指令处理。

压缩和解压缩类#

指令 作用
gzip 文件名 压缩文件
gunzip 文件名.gz 解压文件
zip 压缩文件或文件夹。-r:递归压缩,即压缩目录
unzip 解压文件或文件夹。-d:指定解压后文件的存放目录-
tar 选项 文件名.tar.gz 打包的内容 将文件夹打包。-c:产生.tar打包文件;-v:显示详细信息;-f:指定压缩后的文件名;-z:打包同时压缩;-x:解包tar文件

组管理和权限管理#

指令 作用
ls -ahl 查看文件的所有者
chown 用户名 文件名 修改文件所有者,-R:如果是目录,则使其下所有子文件或目录递归生效
chgrp 组名 文件名 修改文件所在的组,-R:如果是目录,则使其下所有子文件或目录递归生效
groupadd 组名 新增组
groupdel 组名 删除组
useradd -g 用户组 用户名 增加用户的时候直接加上组
usermod -g 用户组 用户名 修改用户的组
chmod u=rwx,g=rx,o=x 文件或目录名 给文件或目录的所有者读写执行的权限,给所在组读执行权限,给其他组执行权限。+增强权限,-减少权限,=赋予权限。u所有者,g所在组,o其他组,a全部用户。
chmod 751 文件或目录名 通过数字变更权限,r=4,w=2,x=1,相加得到数字,u=7=4+2+1=rwx,g=5=4+1=rx,o=1=x。因此相当于chmod u=rwx,g=rx,o=x 文件或目录名。

在linux中的每个用户必须属于一个组,不能独立于组外。在Linux中每个文件有所有者、所在组、其它组的概念。

除文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组。

权限基本介绍

  1. 第0位确定文件类型(d,-,I,c,b):I是链接,相当于windows的快捷方式;-是普通文件;d是目录,相当于windows的文件夹;c是字符设备:文件,鼠标,键盘;b是块设备,比如硬盘。
  2. 第1-3位确定所有者(该文件的所有者)拥有该文件的权限。
  3. 第4-6位确定所属组(同用户组的)拥有该文件的权限。
  4. 第7-9位确定其他用户拥有该文件的权限。

rwx作用到文件:[r]代表可读(read):可以读取,查看。[w]代表可写(write):可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件。[x]代表可执行(execute):可以被执行.

rwx作用到目录:[r]代表可读(read):可以读取,Is查看目录内容。[w]代表可写(write):可以修改,对目录内创建+删除+重命名目录。[x]代表可执行(execute):可以进入该目录。

权限更新会有延时性,系统记录的是你刚开始登录的所在组,需要更新或者重新登录来更新自己的组。

任务调度#

指令 作用
crontab -e:编辑定时任务;-l:查询任务;-r:删除所有任务
*/1 * * * * ls -l /etc/ > /tmp/to.txt 每小时的每分钟执行一次后面的指令。
at 选项 时间 一次性定时任务,输入ctrl+d结束at命令的输入
atrm 编号 删除编号的at任务

任务调度是指系统在某个时间执行的特定的指令或程序。

at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列来运行。默认情况下,atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业。 at命令是一次性定时计划任务,执完一个任务后不再执行此任务了。在使用at命令的时候,一定要保证atd程的启动,可以使用相关指令ps -ef | grep atd来查看。

crontab#

5个占位符

项目 含义 范围
第一个* 一小时当中的第几分钟 0-59
第二个* 一天中的第几小时 0-23
第三个* 一个月当中的第几天 1-31
第四个* 一年当中的第几月 1-12
第五个* 一周当中的星期几 0-7(0和7都代表星期日)

特殊符号

特殊符号 含义
* 代表任何时间。比如第一个“*”就代表一小时中每分钟都执行一次的意思。
, 代表不连续的时间。比如“0 8,12,16 * * *命令”,就代表在每天的8点0分,12点0分,16点0分都执行一次命令。
- 代表连续的时间范围。比如“0 5 * * 1-6命令”,代表在周一到周六的凌晨5点0分执行命令。
*/n 代表每隔多久执行一次。比如“*/10 * * * *命令”,代表每隔10分钟就执行一遍命令。

at命令#

at命令选项

选项 含义
-m 当指定的任务被完成后,将给用户发送邮件,即使没有标准输出
-I atq的别名
-d atrm的别名
-v 显示任务将被执行的时间
-c 打印任务的内容到标准输出
-V 显示版本信息
-q <队列> 使用指定的队列
-f <文件> 从指定文件读入任务而不是从标准输入读入
-t <时间参数> 以时间参数的形式提交要运行的任务

at时间定义

  1. 接受在当天的hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。例如: 04:00。
  2. 使用midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午4点)等比较模糊的词语来指定时间。
  3. 采用12小时计时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。例如:12pm。
  4. 指定命令执行的具体日期,指定格式为month day(月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年),指定的日期必须跟在指定时间的后面。例如:04:00 2021-03-1。
  5. 使用相对计时法。指定格式为:now+count time-units,now就是当前时间,time-units是时间单位,这里能够是minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count是时间的数量,几天,几小时。例如:now+5 minutes。
  6. 直接使用today(今天)、tomorrow(明天)来指定完成命令的时间。

磁盘分区与挂载#

指令 作用
lsblk 查看磁盘分区情况,-f可以查看更详细的信息
fdisk /dev/sdb 对sdb硬盘进行分区
mkfs -t 分区类型 /dev/sdb1 格式化sdb1磁盘
mount 磁盘名 文件夹名 将磁盘挂载到文件夹上
umount 磁盘名或文件夹名 取消挂载
df -h 查询系统整体磁盘使用情况
du -h 目录名 查询指定目录的磁盘占用情况
tree 目录名 以树状显示目录结构,可能需要使用yum install tree安装该指令

增加硬盘的步骤#

  1. 虚拟机添加硬盘:在【虚拟机】菜单中,选择【设置】,然后设备列表里添加硬盘,然后一路【下一步】,中间只有选择磁盘大小的地方需要修改,直到完成。然后重启系统(才能识别)!
  2. 分区:开始分区后输入n,新增分区,然后选择p,分区类型为主分区。两次回车默认剩余全部空间。最后输入w写入分区并退出,若不保存退出输入q。
  3. 格式化。
  4. 挂载:用命令行挂载是临时的,重启后会失效。永久挂载通过修改/etc/fstab文件实现挂载,添加完成后执行mount -a立即生效。

网络配置#

指令 作用
ifconfig 查看Linux的网络配置
ipconfig 查看Windows的网络配置
ping 目的主机 测试当前服务器是否可以连接目的主机
service network restart 重启网络服务

指定IP地址:直接修改配置文件来指定IP,并可以连接到外网。编辑vim /etc/sysconfig/network-scripts/ifcfg-ens33。修改后重启网络服务或重启系统生效。

通过vim /etc/hostname修改主机名,修改后重启生效。

主机名与hosts映射。Windows端:在C:\Windows\System32\drivers\etc\hosts文件指定。Linux端:在/etc/hosts文件指定。

进程管理#

指令 作用
ps 查看目前系统中,有哪些正在执行,以及执行情况。-a:显示当前终端的所有进程信息;-u:以用户的格式显示进程信息;-x:显示后台程序运行的参数。
kill 选项 进程号 通过进程号终止进程。-9表示强制进程立即停止。
killall 进程名称 通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用。
pstree 选项 查看进程树。-p:显示进程的PID;-u:显示进程的所属用户。
service 服务名 选项 管理服务
setup 查看所有系统服务,带*的会自启动
chkconfig 给服务的各个运行级别设置自启动或关闭,需要重启后生效。
systemctl 选项 服务名 管理服务
firewall-cmd --permanent --add-port=端口号/协议 打开端口,改为--remove=port则是关闭端口
firewall-cmd --reload 重新载入后才能生效
firewall-cmd --permanent --query-port=端口号/协议 查询端口是否开放
top 选项 用于动态更新正在执行的进程
netstat 选项 查看系统网络情况。-an:按一定顺序排列输出;-p:显示哪个进程在调用
ping 对方ip 网络检测工具

ps指令依次显示进程执行用户、进程号、占用CPU的百分比、占用虚拟内存的百分比、占用物理内存的百分比、终端信息、当前运行状态、开始时间、占用的CPU时间和执行该进程的指令。

PPID是父进程ID。

服务(service)本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysqld,sshd防火墙等),因此我们又称为守护进程,是Linux中非常重要的知识点。

systemctl指令关闭或者启用防火墙后,立即生效。但这种方式只是临时生效,当重启系统后,还是回归以前对服务的设置。如果希望设置某个服务自启动或关闭永久生效,要使用systemctl的enable和disable选项。

service管理的指令可以在/etc/init.d查看。

systemctl指令管理的服务在/usr/Iib/systemd/system查看。

使用dism /Online /Enable-Feature /FeatureName:TelnetClient指令在Windows安装Telnet指令。

RPM和YUM#

指令 作用
rpm -qa 查询已安装的RPM列表
rpm -q firefox 查询软件是否安装
yum list 查询可以安装的软件
yum install 包名 按照指定的yum包

rpm用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。RPM是RedHat Package Manager(RedHats软件包管理工具)的缩写,类似windows的 setup.exe,这一文件格式名称虽然打上了RedHat的标志,但理念是通用的。

可以在光盘的package文件夹中找需要按照的rpm包。

yum是一个Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。

提高篇#

java#

安装jdk要注意写入环境变量,并在写入后更新文件。

安装Tomcat要注意打开防火墙的端口。

安装idea要注意在图像界面启动.sh文件,因为安装时需要图形界面。

安装MySQL时,centos7.6自带的类mysql数据库是mariadb,会跟mysql冲突,要先删除。

shell#

指令 作用
set 显示当前shell中的所有变量
变量=值 定义变量
unset 变量 撤销变量
readonly 变量 声明静态变量,不能unset
export 变量名=变量值 将shell变量输出为环境变量/全局变量
source 配置文件 刷新配置文件使其生效
echo $变量名 输出变量的值
:<<! 内容 ! 多行注释,注释符号需要分行
$$ 当前进程的进程号(PID)
$! 后台运行的最后一个进程的进程号(PID)
$? 最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0则证明上一个命令执行不正确。
$((运算符))$[运算式]或expr 运算式 算术运算,expr运算符间要有空格且乘法需要/转义符号
[ condition ] 条件判断,condition前后有空格,非空返回true
read 选项 参数 读取用户的输入。-p设置提示信息;-t设置等待时间。
basename pathname suffix 返回完整路径最后的/的部分,常用于获取文件名,suffix选择是否去掉该后缀
dirname 返回完整路径最后的/的前面的部分,常用于获取路径部分。

Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序。用户可以用Shell来启动、挂起、停止甚至是编写一些程序。

脚本需要以#!/bin/bash开头,还需要有可执行权限。

Linux Shellr中的变量分为,系统变量和用户自定义变量。系统变量:$HOME、$PWD、$SHELL、$USER等等。

定义变量的规则#

  1. 变量名称可以由字母、数字和下划线组成,但是不能以数字开头。5A=200这样是错误的。
  2. 等号两侧不能有空格变量。
  3. 名称一般习惯为大写。
  4. 将命令的返回值赋给变量:A=date反引号,运行里面的命令,并把结果返回给变量A。A=$(date)等价于反引号。

位置参数变量#

当我们执行一个shell脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量。比如:./myshell.sh100 200,这个就是一个执行shell的命令行,可以在myshell脚本中获取到参数信息。

语法 作用
$n|n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,如${10}
|*把所有的参数看成一个整体。
@|@把每个参数区分对待。
$# 这个变量代表命令行中所有参数的个数。

流程控制#

if [ $1 -ge 60 ]
then
    echo "及格了"
elif [ $1 -lt 60 ]
then 
    echo "不及格"
fi

case $1 in
"1")
echo "周一"
;;
"2")
echo "周二"
;;
*)
echo "other"
;;
esac

for i in "$*"
do
    echo "num is $i"
done

SUM=0
i=0
while [ $i -le $1 ]
do
    SUM=$[$SUM+$i]
    i=$[$1+1]
done

自定义函数#

Ubuntu#

指令 作用
sudo apt-get update 更新源
sudo apt-get install package 安装包
sudo apt-get remove package 删除包
sudo apt-cache show package 获取包的相关信息
sudo apt-get source package 下载包的源代码
ssh 用户名@IP 在Linux上远程连接其他Linux

apt是Advanced Packaging Tool的简称,是一款安装包管理工具。在Ubuntu下,我们可以使用apt命令进行软件包的安装、删除、清理等,类似于Windows中的软件管理工具。在/etc/apt/sources.list文件中有服务器地址(美国APT),由于网络问题,通常我们将其改为国内的镜像站。

和CentOS不一样,Ubuntu默认没有安装SSHD服务(使用netstat指令查看:apt install net-tools),因此,我们不能进行远程登录。

日志#

指令 作用
cron 系统定时任务相关的日志
lastlog 系统中所有用户最后一次的登录时间的日志
message 系统重要消息的日志。这个日志文件中会记录Linux系统的绝大多数重要信息。如果系统出现问题,首先要检查的应该就是这个日志文件。
secure 记录验证和授权方面的信息,只要涉及账户和密码的程序都会记录,比如系统的登录、ssh的登录、su的切换用户, sudo的授权,甚至添加用户和修改用户密码都会记录在这个日志文件中。
ulmp 记录当前已经登录的用户的信息。这个文件会随着用户的登录和注销而不断变化,只记录当前登录用户的信息。这个文件不能用vi查看,而要使用w、who、users等命令查看
journalctl 查看内存日志,重启清空

系统日志文件的保存位置是/var/log/。

在文件/etc/rsyslog.conf在可以查看日志的服务。

由日志服务rsyslog记录的日志文件的格式包含以下4列:事件产生的时间;产生事件的服务器的主机名;产生事件的服务名或程序名和事件的具体信息。

/etc/logrotate.conf记录全局的日志轮替策略,当然也可以单独给某个日志文件指定策略。也可以把某个日志的轮替规则写到/etc/logrotate.d目录上。

定制自己的Linux系统#

Linux启动流程#

  1. Linux要通过自检,检查硬件设备有没有故障。
  2. 如果有多块启动盘的话,需要在BIOS中选择启动磁盘。
  3. 启动MBR中的bootloader引导程序。
  4. 加载内核文件。
  5. 执行所有进程的父进程、老祖宗systemd。
  6. 欢迎界面。

源码阅读#

文件夹 作用
boot 存放与系统引导相关的代码
fs 存放Linux支持的文件系统代码
include 存放Linux核心需要的头文件
init 存放初始化相关的源码
kernel 存放与内核相关的代码
lib 存放库代码
mm 内存管理的代码
tools 工具相关的代码

内核升级#

指令 操作
uname -a 查看当前的内核版本
yum info kernel -q 检测内核版本,显示可以升级的内核
yum update kernel 升级内核
yum list kernel -q 查看已经安装的内核

备份与恢复#

linux的备份和恢复很简单,有两种方式: 1、把需要的文件(或者分区)用TAR打包就行,下次需要恢复的时候,再解压开覆盖即可。2、使用dump和restore命令。

dump指令在备份分区时,是可以支持增量备份的,如果备份文件或者目录,不再支持增量备份,即只能使用0级别备份。

权限管理#

  1. 注意权限分离,比如:工作中,Liux系统权限和数据库权限不要在同一个部门权限最小原则,即在满足使用的情况下最少优先。
  2. 减少使用root用户,尽量用普通用户+sudo提权进行日常操作。
  3. 重要的系统文件,比如/etc/passwd,/etc/shadow etc/fstab,/etc/sudoers等,日常建议使用chattr(change attribute)锁定,需要操作时再打开。
  4. 使用SUID,SGID,Sticky设置特殊权限。
  5. 可以利用工具,比如chkrootkit/rootkit hunter检测rootkit脚本(rootkit是入侵者使用工具,在不察觉的建立了入侵系统途径)。
  6. 利用工具Tripwire检测文件系统完整性。

CentOS7启动#

  1. 硬件引导启动
  2. GRUB2启动引导
  3. 内核引导
  4. systemd初始化阶段

作者:xiqin

出处:https://www.cnblogs.com/xiqin-huang/p/17898612.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   西芹-小汤圆  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示