目录
网络连接的三种模式
linux常用文件夹
vi与vim的三种模式
快捷键:
用户:
用户组:
指定运行级别:
指定运行级别:
找回root密码:
帮助指令
文件目录类
pwd指令
ls指令
cd指令
mkdir指令
rmdir指令
touch指令
cp指令
rm指令
mv指令
cat指令
more指令
less指令
echo指令
head指令
tail指令
>指令与>>指令
ln指令
history指令
时间日期类
date指令
cal指令
搜索查找类
find指令
locate指令
grep指令和管道符 |
压缩与解压类
gzip/gunzip 指令
zip/unzip 指令
tar指令
linux组
权限的基本介绍
crond任务调度
crontab 进行 定时任务的设置
at定时任务
linux分区
如何为虚拟机添加一块硬盘
磁盘情况查询
查看网络ip和网关
进程管理
ps详解
终止进程kill和killall
查看进程树pstree
服务管理
查看服务名
服务的运行级别(runlevel)
指定运行级别
chkconfig指令
firewall指令
动态监控进程
监控网络状态
RPM与YUM
rpm包的管理
卸载rpm包
安装rpm包
yum
搭建JAVAEE环境
安装JDK
tomcat的安装
idea的安装
mysql5.7安装
shell编程
shell的变量
设置环境变量
运算符
if判断
case语句
for循环
while循环
read读取控制台输入
函数介绍
basename基本语法
dirname基本语法
shell编程综合案例
ubuntu
Ubuntu的root用户
apt
Ubuntu软件操作相关命令
远程登录Ubuntu
Centos8.1
日志管理
日志管理服务 rsyslogd
日志轮替
日志轮替机制原理
查看内存日志
定制自己的Linux
升级内核
linux系统恢复与备份
webmin
bt宝塔
linux面试题
1.桥接模式,虚拟系统可以和外部系统通讯,但是容易造成IP冲突
2.NAT模式,网络地址转换模式,虚拟系统可以与外部系统通讯,而且不造成IP冲突
3.主机模式,独立的系统
/bin:存放最经常使用的命令
/sbin:存放系统管理员使用的系统管理程序
/home:存放普通用户的主目录,每个用户都有自己的一个目录,一般以账号命名
/root:系统管理员,超级用户主目录
/lib:系统开机所需要最基本的动态连接共享库
/lost+found:这个目录一般情况下为空,当系统非法关机,就会存放一些文件
/etc:所有的系统管理所需要的配置文件和子目录 my.conf
/usr:用户的很多应用程序和文件都放在这个目录下,类似与windows下的program files目录
/boot: 存放的是启动linux时使用的一些核心文件包括一些连接文件以及镜像文件
/proc:这个目录是一个虚拟目录,它是系统内存的映射,访问这个目录来获取系统信息
/srv:service缩写,该目录存放一些服务启动后需要提取的数据
/sys:是linux2.6内核的一个很大的变化,该目录下安装了2.6内核中新出现的一个文件系统sysfs
/tmp:这个目录存放一些临时文件
/dev:类似于windows的设备管理器,把所有硬件使用文件形式存储
/media:linux系统会自动识别一些设备,例如U盘,光驱等等,识别后会将设备挂载在此目录下
/mnt:系统提供该目录是为了让用户临时挂载别的文件系统,可以将外部存储挂载在/mnt/上
/opt:这是给主机额外安装软件所摆放的目录,默认为空
/usr/local:这是另一个主机额外安装软件所需安装的目录,一般通过编译源码方式安装的程序
/var:这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下。包括各种日志文件
/selinux[security-enhanced linux]:SElinux是一种安全子系统,它能控制程序只能访问特定文件,有三种工作模式,可以自行设置
正常模式
插入模式:按下i,I,o,O,a,A,r,R任意一个即可,一般按i
点击esc输入:进入命令行模式:可提供相关指令,完成读取等操作
:q(退出) :wq(保存且退出) :q!(强制退出不保存)
一般模式下复制:yy 复制3行:3yy 粘贴:p 删除:dd 删除3行:3dd
查找单词:命令行下/关键字,回车进行查找,输入n查找下一个
设置行号:命令行下 :set nu 取消 :set nonu
在一般模式下光标移动至文档最末行输入G 移动至首行输入gg 移动至3行输入3 按下shift+g
添加用户:useradd 用户名 (-d /目录名称) 包含组:useradd -g 组名 用户名
查询用户信息: id 用户名
修改用户密码: passwd 用户名
查看当前所在目录: pwd
删除用户: userdel 用户名(一般保留家目录) userdel -r 用户名(完全删除需谨慎操作)
切换用户:su - 用户名 权限由高切换到低用户不需要输入密码反之需要,返回原来用户时使用logout/exit
查询登录用户: who am i
新增组:groupadd 组名
删除组:groupdel 组名
修改用户组:usermod -g 用户组 用户名
/etc/passwd文件:用户(user)的配置文件,记录用户的各种信息
每行含义:用户名:口令:识别号:组识别号:注释性描述:主目录:登录shell
/etc/shadow文件:口令的配置文件
每行含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
/etc/group文件:组的配置文件,记录linux包含的组信息
每行含义:组名:口令:组标识号:组内用户列表
0:关机
1:单用户【找回丢失密码】
2:多用户状态没有网络服务
3:多用户状态有网络服务
4:系统未使用保留给用户
5:图形界面
6:重启系统
常用运行级别是3和5,也可以指定默认运行级别
使用 init 切换运行级别
centos7以前,/etc/inittab文件中
multi-user.target:analogous to runlevel 3
graphical.target:anologous to runlevel 5
查看当前运行级别:systemctl get-default
设置默认运行级别:systemctl set-default TARGET.target
1,启动系统,进入开机界面,在界面中按“e”进入编辑界面
2,进入编辑界面,使用键盘上下键将光标往下移动,找到“Linux16”开头内容所在的行数,在行的最后键入 init=/bin/sh
3,输入完成后,点击快捷键,ctrl+x 进入单用户模式
4,在光标闪烁的位置输入:mount -o remount,rw / 注意:各个单词间有空格,完成后按enter
5,在新的一行最后输入:passwd,完成后按键盘的回车键(enter),输入密码,再次确认密码即可,完成后显示passwd。。。。即修改成功
6,在鼠标闪烁的位置中 输入:touch /.autorelabel (注意:couch与/.之间有空格)完成后点enter
7,在鼠标闪烁的位置中 输入:exec /sbin/init (注意:exec与/之间有空格)完成后点enter,随后系统重启,新密码生效
linux的隐藏文件是以 . 开头的选项可以组合使用如 ls - al,ls - al /root(指明文件夹)
man:获得帮助信息 如:man ls
help:获得shell内置命令的帮助信息 如:help cd
基本语法:pwd 描述:显示当前工作目录的绝对路径
基本语法:ls [选项] [目录或文件]
常用选项:
-a:显示所有目录和文件包括隐藏的
-l:以列表方式显示信息
基本语法:cd [参数] 描述:切换到指定目录
理解:绝对路径与相对路径
cd ~ 或者 cd : 回到用户的家目录
cd.. 回到当前目录的上一级目录
用于创建目录
基本语法:mkdir [选项] 目录名
常用选项
-p 创建多级目录
用于删除空目录
基本语法:rmdir [选项] 目录名
rmdir删除的是空目录,如果有内容是无法删除的
提示:如果需要删除非空目录,需要使用 rm -rf 目录名
用于创建空文件
touch语法:touch 文件名
用于拷贝文件到指定目录
基本语法
cp [选项] 被拷贝文件 目标文件夹
常用选项
-r 递归复制整个文件夹
使用细节:强制覆盖不提示的方法 \cp -r /home/bbb/ /opt/
用于移除文件或目录
基本语法
rm [选项] 要删除的文件或目录
常用选项
-r 递归删除整个文件夹
-f 强制删除不提示
用于移动文件与目录或者重命名
基本语法
mv OldNameFile NewNameFile 同一目录下重命名
mv /temp/movefile /targetFolder 移动文件
用于查看文件内容
基本语法
cat [选项] 查看的文件
常用选项 -n 显示行号
使用细节
cat 只能浏览文件,而不能修改文件,为了浏览方便,一般会带上管道命令 | more
是一个基于VI编辑器的文本过滤,它以全屏幕的方式按页显示文本文件内容。more指令内置若干快捷键,详看操作说明
基本语法
more 查看的文件
less指令用于分屏查看文件内容,它的功能与more指令类似但比more指令强大,支持各种显示终端。less指令在显示文件内容时,并不是一次性将整个文件加载之后再显示,而是根据显示需要加载内容,对于大型文件具有较高效率
基本语法
less 查看的文件
用于输出内容到控制台
基本语法
echo [选项] [输出内容]
用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行
基本语法
head 文件名 显示前十行内容
head -n 5 文件名 显示前五行内容
用于输出文件的尾部内容,默认输出后十行内容
基本语法
1)tail 文件名 查看文尾十行内容
2)tail -n 5 文件名 查看文尾五行内容,5可以是任意行数
3)tail -f 文件名 实时追踪该文档的所有更新
>输出重定向和>>追加
基本语法
1)ls -l >文件 列表的内容写入进a.txt中(覆盖)若文件不存在则会自动创建
2)ls -al >> 文件 列表的内容追加进a.txt的末尾
3)cat 文件1>文件2 将文件1的内容覆盖到文件2
4)echo “内容” >> 文件 追加
cal命令显示日历
软链接也称为符号链接,类似于windows里的快捷方式,主要存放了链接其他文件的路径
基本语法
ln -s [原文件或目录] [软链接名] 给原文件创建一个软链接
删除直接用rm删
查看已经执行过的指令,也可以执行历史指令
基本语法
history 查看已经执行过的历史指令
history 10 查看最近10条历史指令
输入history后再输入 !5 会再次执行编号为5的指令
用于显示当前日期
基本语法
1)date 显示当前时间
2)date+%Y 显示当前年份
3)date+%m 显示当前月份
4)date+%d 显示当前是哪一天
5)date"+%Y-%m-%d %H:%M:%S" 显示年月日时分秒
设置日期
基本语法
date -s 字符串时间
如:date -s "2024-01-06 08:02:01"
查看日历命令
基本语法
cal [选项] 不加选项显示本月日历
cal 2024 显示2024所有月份日历
find指令将从指定目录下递归遍历其各个子目录,将满足条件的文件或目录显示在终端
基本语法
find [搜索范围] [选项]
选项说明
文件大小(+n 大于 -n 小于 n等于,单位有K,M,G)
如 find /root -size +200M
locate指令可以快速定位文件路径,locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件,locate指令无需遍历整个文件系统,查询速度快,为了保证结果准确度,管理员必须定期更新locate时刻
基本语法
locate 搜索文件
特别说明
由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库。
which指令,可以查看某个指令在哪个目录下,比如ls指令在哪个目录 which ls
grep过滤查找,管道符,”|“,表示将前一个命令的处理结果输出传递给后面的命令处理
基本语法
grep [选项] 查找内容 源文件
常用选项
例如:cat /home/hello.txt | grep -n "yes" 显示hello文件中所有yes字符串并显示行号
grep -n ”yes“ /home/hello.txt
gzip用于压缩文件,gunzip用于解压
基本语法
gzip 文件 压缩文件,只能将文件压缩为*.gz文件
gunzip 文件.gz 解压文件
zip用于压缩,unzip用于解压,项目打包发布中很有用
基本语法
zip [选项] xxx.zip 将要压缩的内容 压缩文件和目录的命令
unzip [选项] xxx.zip 解压缩文件
zip常用选项
-r 递归压缩,即压缩目录
unzip常用选项
-d<目录>指定解压后文件的存放目录
例如:zip -r myhome.zip /home/ 将home及之下的所有子目录进行压缩为myhome.zip
mkdir /opt/tmp unzip -d /opt/tmp /home/myhome.zip 将myhome.zip解压到/opt/tmp目录下
tar指令是打包指令,最后打包的文件是.tar.gz的文件、
基本语法
tar [选项] XXX.tar.gz 打包内容 打包目录,压缩后的文件格式.tar.gz
选项说明
例如:tar -zcvf pc.tar.gz /home/pig.txt /home/cat.txt 压缩多个文件为pc.tar.gz
tar -zxvf pc.tar.gz -c /opt/tmp2 解压到/opt/tmp2
在linux中每个用户都必须属于一个组,不能独立于组外。linux中每个文件都有所有者,所在组,其他组的概念
文件/目录所有者
一般为文件的创建者,谁创建了文件,就自然的成为该文件的所有者
查看文件所有者 ls -ahl
修改文件所有者 chown 用户名 文件名
组的创建
groupadd 组名
创建一个monster组
groupadd monster
创建一个用户fox,并放入monster组中
useradd -g monster fox
文件/目录所在组
当某个用户创建了一个文件后,这个文件的所在组就是该用户的所在组
查看文件/目录所在组
ls -ahl
修改文件所在组
chgrp 组名 文件名
其他组
除文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组
改变用户所在组
在添加用户时,可以指定将该用户添加到哪个组中,同样的用root的管理权限可以改变某个用户所在的组
usermod -g 组名 用户名
usermod -d 目录名 用户名 改变该用户登陆的初始目录. 特别说明:用户需要有进入到新目录的权限
在ls -l 中显示
-rw-------. 1 root root 1881 9月 27 19:43 anaconda-ks.cfg
0-9说明:
1)第0位确定文件类型(d,-,l,c,b)
l是链接,相当于windows的快捷方式
d是目录,相当于windows的文件夹
c是字符设备文件,鼠标,键盘
b是块设备,如硬盘
2)第1-3位确定所有者(该文件的所有者)拥有该文件的权限。---User
3)第4-6位确定所属组(同用户组的)拥有该文件的权限。---Group
4)第7-9位确定其他用户拥有文件的权限。---Other
rwx作用到文件
r:可读
w:可写,但不代表可以删除文件,删除一个文件的前提是对该文件所在目录有写权限,才能删除
x:可执行
rwx作用到目录
r:可读,ls查看目录内容,将目录的内容显示出来
w:可写,可以修改,对目录内创建+删除+重命名目录,
x:可执行,可以进入该目录
-rw-------. 1 root root 1881 9月 27 19:43 anaconda-ks.cfg
1 文件:硬链接数或 目录:子目录数+文件数
root 用户
root 组
1881 文件大小(字节),如果是文件夹,
9月 27 19:43 最后修改日期
anaconda-ks.cfg 文件名
修改权限 chmod
通过chmod指令,可以修改文件或目录的权限
第一种方式:+,-,=变更权限
u:所有者 g:所在组 o:其他人 a:所有人(u,g,o的总和)
chmod u=rwx,g=rx,o=x 文件/目录名
chmod o+w 文件/目录名
chmod a-w 文件/目录名
第二种方式:通过数字变更
r=4 w=2 x=1 rwx=7
chmod u=rwx,g=rx,o=x 文件目录名
相当于 chmod 751 文件目录名
修改文件所有者 chown
基本介绍
chown newowner 文件/目录 改变所有者
chown newowner:newgroup 文件/目录 改变所有者和所在组
-R 如果是目录 则使其下所有子文件或目录递归生效
chown -R tom /home/test 将/home/test 目录下的所有文件和目录的所有者都改为tom
修改文件所在组 chgrp
基本介绍
chgrp newgroup 文件/目录 改变所在组
chgrp -R ... 递归生效
如果要对目录内的文件进行操作,需要现有对该目录的相应权限
概述
任务调度:是指系统在某个时间执行的特定的命令或程序
任务调度分类:1,系统工作:有些重要的工作必须周而复始的进行,如病毒扫描
2,个别用户工作:个别用户可能希望执行某些程序,比如对mysql数据库的备份
基本语法
crontab [选项]
常用选项
设置任务调度文件:/etc/crontab
设置个人任务调度。执行 crontab -e 命令
接着输入任务到调度文件
如: */1 * * * * ls -l /etc/ > /tmp/to.txt 每小时的每分钟执行ls -l /etc/ > /tmp/to.txt命令
五个占位符说明
特殊符号的说明
例如:
任务调度步骤:
每隔一分钟,将当前日期和日历都追加到/home/mycal中
1)vim /home/my.sh 写入操作 date >> /home/mycal 和 cal >> /home/mycal
2)给my.sh追加执行权限,chmod u+x /home/my.sh
2)执行 crontab -e 增加 */1 * * * * /home/my.sh
备份数据库
mysqldump -u root -p密码 数据库 >>/home/db.bak
相关指令
crontab -r 终止任务调度
crontab -l 列出当前有哪些任务调度
service crond restart 重启任务调度
基本介绍:
1.at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列来运行
2.默认情况下,atd守护进程每六十秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业
3,at命令是一次性定时计划任务,执行完一个任务后不再执行此任务
4.在使用at命令的时候,一定要保证atd进程的启动,可以使用相关指令来查看
ps -ef 监测当前正在运行的进程
ps -ef | grep atd 监测atd是否在运行
at命令格式
at [选项] [时间]
at命令选项
at时间指定方法:
1.接受在当天的hh:mm(小时:分钟)式的时间指定,假如该时间已过去,那么就放在第二天执行,例如:04:00
2,使用midnight,noon,teatime(一般为下午四点)等比较模糊的词语来指定时间
3.采用12小时计时制,即在时间后面加上AM或PM来说明是上午还是下午,例如:12pm
4,指定命令执行时间的具体日期,指定格式为month day(月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年),指定的日期必须跟在指定时间的后面。例如:04:00 2024-01-12
5.使用相对计时法。指定格式为:now + count time-units,now就是当前时间,time-units是时间单位,这里能够是minutes,hours,days,weeks。count是时间的数量,几天,几小时例如: now + 5 minutes
6,直接使用today,tomorrow来指定完成命令的时间
ctrl+d 结束at命令的输入(需要输入两次)
例如:两天后的下午五点执行 /bin/ls /home
利用atq命令来查看系统中有没有执行的工作任务
明天17点钟,输出时间到 /root/date100.log
两分钟后,输出时间到 /root/date200.log
删除已经设置的任务,atrm 编号
原理介绍
1.对linux来说无论有几个分区,分区给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构,linux中每个分区都是用来组成整个文件系统的一部分
2.linux采用了一种叫“载入”的处理方式,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来,这时要载入的一个分区将使它的存储空间在一个目录下获得
查看所有设备挂载情况
命令: lsblk 或者 lsblk -f
硬盘说明
1)linux硬盘分IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘
2)对于IDE硬盘,驱动盘标识符为“hdx~”,其中“hd”表明分区所在设备的类型,这里是指IDE硬盘了。“x”为盘号(a为基本盘,b为基本从盘,c为辅助主盘,d为辅助从属盘),“~”代表分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区。例如:hda3表示为第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示为第二个IDE硬盘上的第二个主分区或扩展分区
3)对于SCSI硬盘则标识为”sdx~“,SCSI硬盘是用”sd“来表示分区所在设备类型的,其余则和IDE硬盘的表示方法一样
1.虚拟机添加硬盘
在虚拟机菜单中,选择设置,然后选择添加硬盘,修改添加硬盘的大小,然后设置完成重启系统
2.分区
分区命令 fdisk /dev/sdx(对哪个分就写哪个如sdb)
开始对/sdb分区
m 显示命令列表
p 显示磁盘分区 同 fdisk -I
n 新增分区
d 删除分区
w 写入并退出
说明:开始写入分区后输入n,新增分区,然后选择p,分区类型为主分区。两次回车默认剩余全部空间。最后输入w写入分区并退出,若不保存退出输入q
3.格式化
格式化磁盘
格式化命令: mkfs -t ext4 /dev/sdb1(sdbx)
其中ext4是分区类型
4.挂载
将一个分区与一个目录联系起来
mount 设备名称 挂载目录
例如:mount /dev/sdb1 /newdisk
unmount 设备名称 或者 挂载目录
例如:unmount /dev/sdb1 或者 umount /newdisk
注意:用命令行挂载后重启会失效
5.设置可以自动挂载
永久挂载:通过修改/etc/fstab实现挂载
添加完成后 执行 mount -a 即刻生效
基本语法 df -h
查询指定目录的磁盘占用情况
基本语法 du -h /目录 默认为当前目录
-s 指定目录占用大小汇总
-h 带计量单位
-a 含文件
--max-depth=1 子目录深度
-c 列出明细的同时,增加汇总值
例如:查询/opt目录的磁盘占用情况,深度为1
练习:
统计/opt文件夹下文件的个数
ls -l /opt | grep "^-" | wc -l
统计/opt文件夹下目录的个数
ls -l /opt | grep "^d" | wc -l
统计/opt文件夹下文件的个数,包括子文件夹里的
ls -lR /opt | grep "^-" | wc -l
统计/opt文件夹下目录的个数,包括子文件夹里的
ls -lR /opt | grep "^d" | wc -l
以树状显示目录结构
tree 目录名(如果没有tree,则使用 yum install tree 进行安装)
查看虚拟网络编辑器和修改ip地址
查看window的网络配置使用ipconfig
查看虚拟机的网络配置使用ifconfig
ping测试主机之间网络连通性
基本语法
ping 目的主机(功能描述:测试当前服务器是否可以连接目的主机)
第一种方法(自动获取)
说明:登陆后,通过界面的来设置自动获取ip,特点:linux启动后会自动获取ip,缺点是每次自动获取的ip地址可能不一样
第二种方法(指定ip)
说明:直接修改配置文件来指定ip,并可以连接到外网(程序员推荐)
编辑 vi /etc/sysconfig/network-scripts/ifcfg-ens33
要求:将ip地址配置为静态的,比如:ip地址为192.168.200.130
文件说明
TYPE="Ethernet" 网络类型
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp" 需修改
none |static |bootp |dhcp 引导时不使用协议 |静态分配ip| bootp协议 |dhcp协议
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="60900378-7174-4741-81aa-04717379083f" 随机id
DEVICE="ens33" 接口名
ONBOOT="yes" 系统启动时网络接口是否有效
需要添加部分:
IP地址
IPADDR=192.168.200.130
网关
GATEWAY=192.168.200.2
域名解析器
DNS1=192.168.200.2
重启网络服务或重启系统生效
service network restart reboot
设置主机名和hosts映射
设置主机名
1)为了方便记忆,可以给linux系统设置主机名,也可以根据需要修改主机名
2)指令hostname :查看主机名
3)修改文件在 /etc/hostname 指定
4)修改后,重启生效
设置hosts映射
windows系统中
在C:\Windows\System32\drivers\etc\hosts 文件中指定
IP地址 主机名
linux系统中
在/etc/hosts 文件中指定
IP地址 主机名
主机名解析过程(Hosts、DNS)
hosts是什么?
一个文本文件用来记录IP和Hostname(主机名)的映射关系
DNS?
1.DNS,就是Domain Name System的缩写,翻译过来就是域名系统
2.是互联网上作为域名和IP地址互相映射的一个分布式数据库
浏览器访问域名流程
基本介绍:
1.在linux中,每个执行的程序都被称为一个进程,每一个进程都分配一个ID号(pid,进程号)
2.每个进程都可能以两种方式存在,前台和后台,所谓前台进程就是用户目前的屏幕上可以进行操作的,后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行
3.一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中,直到关机才结束
显示系统执行的进程
ps命令是用来查看目前系统中,有哪些正在执行,以及它们的执行情况,可以不加任何参数
1.指令 ps - aux | grep xxx
2.指令说明
System V 展示风格
USER 用户名称
PID 进程号
%CPU 进程占用cpu百分比
%MEM 进程占用物理内存的百分比
VSZ 进程占用虚拟内存大小(单位:KB)
RSS 进程占用物理内存大小(单位:KB)
TTY 终端名称,缩写
STAT 进程状态,其中S-睡眠,s-表示该进程是会话先导进程,N-表示进程拥有比普通优先级更低的优先级,R-正在运行,D-短期等待,Z-僵死进程,T-被跟踪或者被停止等等
STARTED 进程启动时间
TIME cpu时间,即进程使用cpu总时间
COMMAND 启动进程所用的命令和参数,如果过长会被截断显示
ps -ef 是以全格式显示当前所有的进程
-e显示所有进程 -f是全格式
ps -ef|grep xxx 是BSD风格
UID:用户ID
PID:进程ID
PPID:父进程ID
C:CPU用于计算执行优先级的因子,数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,说明进程是I/O密集型运算,执行优先级会提高
STIME:进程启动时间
TTY:完整的终端名
TIME:CPU时间
CMD:启动进程所使用命令和参数
介绍:
若是某个进程执行一半需要停止时,或是已消耗了很大的系统资源时,此时可以考虑停止该进程,使用kill命令来完成此项任务
基本语法
kill [选项] 进程号 功能描述:通过进程号终止进程
killall 进程名称 功能描述:通过进程名称终止进程,也支持通配符,这在系统因负载过大而变得缓慢时很有用
常用选项
-9 表示强迫进程立即停止
例如:
终止远程登录服务sshd,在适当的时候再次重启sshd服务
kill sshd对应的进程号;/bin/systemctl start sshd.service
基本语法
pstree [选项],可以更加直观的来看进程信息
常用选项:
-p 显示进程pid
-u 显示进程的所属用户
介绍:
服务(service)本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其他程序的请求,比如(mysqld,sshd,防火墙等),因此我们又称为守护进程,是linux中非常重要的知识点
service管理指令
1.service 服务名[start | stop | restart | reload | status]
2.在CentOS7.0后,很多服务不在使用service,而是systemctl
3.service指令管理的服务在 /etc/init.d查看
方式一:使用setup -> 系统服务 就可以看到全部
方式二:/etc/init.d 看到service指令管理的服务
linux系统有七种运行级别(runlevel):常用的级别是3和5
0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
1:单用户工作状态,root权限,用于系统维护,禁止远程登录
2:多用户状态(没有NFS),不支持网络
3:完全多用户状态(有NFS),登陆后进入控制台命令模式
4:系统未使用,保留
5:X11控制台,登陆后进入图形GUI模式
6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
开机流程:
centos7以前,/etc/inittab文件中
multi-user.target:analogous to runlevel 3
graphical.target:anologous to runlevel 5
查看当前运行级别:systemctl get-default
设置默认运行级别:systemctl set-default TARGET.target
介绍:
1.通过chkconfig 命令可以给服务的各个运行级别设置自启动/关闭
2.chkconfig 指令管理的服务在 /etc/init.d 查看
3.注意:Centos7.0后,很多服务使用systemctl 管理
chkconfig 基本语法
查看服务 chkconfig --list [|grep xxx]
chkconfig 服务名 --list
chkconfig --level 5 服务名 on/off 指定某个级别服务设置为自启动或关闭
使用细节:chkconfig重新设置服务后自启动或关闭,需要重启机器reboot生效
systemctl指令管理
1)基本语法:systemctl [start | stop | restart | status] 服务名
2)system指令管理的服务在 /user/lib/systemd/system 查看
systemctl设置服务的自启动状态
1.systemctl list-unit-files [ | grep 服务名] 查看服务开机启动状态,使用grep进行过滤
2.systemctl enable 服务名 设置服务开机启动
3.systemctl disable 服务名 关闭服务开机启动
4.systemctl is-enabled 服务名 查询某个服务是否是自启动的
细节:
a:关闭或启用防火墙后,立即生效
b:这种方式只是临时生效,当重启系统后,还是回归以前对服务的设置
c:如果希望某个服务自启动或关闭永久生效,要使用 systemctl [ enable | disable] 服务名
打开或者关闭指定端口
在真正的生产环境,往往要将防火墙打开,但问题来了,如果我们将防火墙打开,那么外部请求数据包就不能跟服务器监听端口通讯。这时,需要打开指定的端口。比如80,22,8080等。
打开端口:firewall-cmd --permanent --add-port=端口号/协议
关闭端口:firewall-cmd --permanent --remove-port=端口号/协议
重新载入,才能生效:firewall-cmd --reload
查询端口是否开放:firewall-cmd --query-port=端口/协议
介绍:top与ps命令很相似。它们都用来显示正在执行的进程,top与ps最大的不同之处,在于top在执行一段时间可以更新正在运行的进程。
基本语法 top [选项]
交互操作说明:
实例:
监控特定用户:
输入top后,再键入 u 输入用户名后回车即可显示
终止指定的进程:
输入top后,再键入 k 输入要结束的进程ID号回车(输入信号量)再键入9即可
查看系统网络情况netstat
基本语法:
netstat [选项]
选项说明
-an 按一定顺序排列输出
-p 显示哪个进程在调用
检测主机连接命令ping:
是一种网络检测工具,它主要是用检测远程主机是否正常,或是两部主机间的网线或网卡故障
ping ip地址
介绍:
rpm用于互联网下载包的打包及安装工具,它包含在某些linux发布版中,它生成具有.RPM扩展名的文件。RPM是RedHat Package Manager(红帽软件包管理工具)的缩写,类似于Windows的setup.exe,这一文件格式虽然打上了RedHat的标志,但理念通用
Linux的分布版本都有采用(suse,redhat,centos等等)可以算是公认的标准
rpm包的简单指令
查询已安装的rpm列表 rpm -qa | grep xxx
rpm包名基本格式
一个rpm包名:firefox-60.2.2-1.el7.centos.x86_64
名称:firefox
版本号:60.2.2-1
适用操作系统:el7.centos
表示centos7.x的64位系统
如果是i686、i386表示32位系统,noarch表示通用
rpm包的其他查询指令
rpm -qa 查询所安装的所有rpm软件包
rpm -qa | more
rpm -qa | grep xx
rpm -q 软件包名 查询软件包是否安装
如:rpm -q firefox
rpm -qi 软件包名 查询软件包信息
如:rpm -qi firefox
rpm -ql 软件包名 查询软件包中的文件
如:rpm -ql firefox
rpm -qf 文件全包路径 查询文件所属软件包
rpm -qf /etc/passwd
rpm -qf /root/install.log
基本语法:rpm -e RPM包名称 //erase
细节:
1.如果其他软件包依赖与所要卸载的软件包,卸载时则会产生错误信息
2.如果我们要硬要删除这种软件包,可以增加参数 --nodeps,就可以强制删除,但一般不推荐,这样做后,依赖与被删除的查询可能会无法执行
基本语法:rpm -ivh RPM包全路径名称
参数说明:
i = install 安装
v = verbose 提示
h = hash 进度条
Yum是一个Shell前端软件包管理器,基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖关系,并且一次性安装所有依赖的软件包。
yum的基本指令
查询yum服务器是否有需要安装的软件
yum list | grep xx软件列表
安装指定的yum包
yum install xxx 下载安装
步骤:
1.mkdir /opt/jdk
2.通过xftp 传到 /opt/jdk 下
3.cd /opt/jdk
4.解压 tar -zxvf jdk-8u261-linux-x64.tar.gz
5.mkdir /user/local/java
6.mv /opt/jdk/jdk1.8.0_261 /user/local/java
7.配置环境变量的配置文件 vim /etc/profile
8.export JAVA_HOME=/user/local/java/jdk1.8.0_261
9.export PATH=$JAVA_HOME/bin:$PATH
10.sorce /etc/profile [让文件生效]
步骤:
1)上传安装文件,并压缩到/opt/tomcat
2)进入解压目录/bin,启动tomcat ./startup.sh
3)开放端口 8080
测试安装是否成功:访问 http://linuxip:8080
1.下载安装包
2.解压缩到 /opt/idea
3.启动idea bin目录下 ./idea.sh,配置jdk
a:新建文件夹/opt/mysql,并cd进去
b:运行 wget https://dev.mysql.com/get/mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar 下载mysql安装包 PS:centos7.6自带mysql 数据库 是 mariadb,会跟mysql冲突,要先删除
c:运行 tar -zxvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar
d:运行 rpm -qa | grep mari,查询 mariadb 相关安装包
e:运行 rpm -e --nodeps mariadb-libs,卸载
f:然后真正开始装 mysql ,依次运行以下命令
rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm
g:运行 systemctl start mysqld.service 启动mysql
h:然后开始设置root用户密码
Mysql 自动给 root 用户设置随即密码,运行 grep "password" /var/log/mysqld.log 可以看到当前密码
i:运行 mysql -uroot -p,用root用户登录,提示输入密码可用上述的,可以成功登录进入 mysql 命令行
j:设置root密码,对于个人开发环境,如果要设比较简单的密码,可以运行
set global validate_password_policy=0;设置密码策略, validate_password_policy默认为1
set global validate_password_length=1;
k:set password for ‘root’ @‘localhost’=password('xxxx');
发现报错:需要使用alter句子 alter user 'root'@'localhost' identified by 'xxxx';
l:运行 flush privileges;使密码生效
为什么学:
1)linux运维工程师在进行服务器集群管理时,需要编写shell程序来进行服务器管理
2)对于JavaEE和Python程序员来说,工作的需要,你的上司会要求你编写一些shell脚本进行程序或者对服务器的维护,比如编写一个定时备份数据库的脚本
3)对于大数据程序员来说,需要编写shell程序来管理集群
什么是shell
shell是一个命令解释器,它为用户提供了一个向linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动、挂起、停止甚至是编写一些程序。
shell脚本执行方式
格式要求:
1.脚本以 #!bin/bash 开头
2.脚本需要有可执行权限
脚本的常用执行方式
方式一:输入脚本的绝对路径或相对路径
说明:首先要赋予helloworld.sh 脚本的 + x 权限,再执行脚本
例如: ./hello.sh 或者使用绝对路径 /root/shcode/hello.sh
方式二(sh脚本):不用赋予权限,直接执行即可
例如:sh hello.sh,也可以使用绝对路径
介绍:
1)linux shell 中变量分为,系统变量和用户自定义变量
2)系统变量:$HOME $PWD $SHELL $USER等等,比如:echo $HOME 等等
3)显示当前shell中所有变量:set
shell变量的定义
基本语法
1.定义变量:变量名=值
2.撤销变量:unset 变量
3.声明静态变量:readonly变量,注意:不能unset
shell变量的定义
规则:
1)变量名称可以又字母、数字、和下划线组成,但是不能以数字开头。4A=200(这是非法的)
2)等号两边不能有空格
3)变量名称一般习惯大写
将命令的返回值赋给变量
1.A=`date`反引号,运行里面的命令,并将结果返回给变量A
2.A=$(date)等价反引号
基本语法
a:export 变量名=变量值 将shell变量输出为环境变量/全局变量
b:source 配置文件 让修改后的配置信息立即生效
c:echo $变量名 查询环境变量的值
注意:在输出TOMCAT_HOME 环境变量前,需要让其生效 source /etc/profile
shell脚本的多行注释
:<
内容
!
位置参数变量
介绍:当我们执行一个shell脚本时,如果希望获得到命令行的参数信息,就可以使用到位置参数变量,比如:./myshell.sh 100 200,这个就是一个执行shell的命令行,可以在myshell 脚本中获取到参数信息
基本语法:
$n n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数需要使用大括号包含,如${10}
$* 这个变量代表命令行中所有参数,$*将所有的参数看成一个整体
$@ 这个变量也代表命令行中所有参数,不过把$@把每个参数区别对待
$! 这个变量代表命令行中所有参数个数
预定义变量
介绍:就是shell设计者事先已经定义好的变量,可以直接在shell脚本中使用
基本语法
$$ 当前进程的进程号
$! 后台运行的最后一个进程的进程号
$? 最后一次执行的命令的返回状态,如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值非0(具体哪个数,由命令自己决定),则证明上一个命令执行不正确
以后台运行一个脚本,在绝对路径后加&
基本语法:
1."$((运算式))" 或 "$[运算式]" 或者 expr m + n expression x
2.注意expr运算符见要有空格,如果希望将 expr 的结果赋给某个变量,必须使用反引号将其包裹住
3.expr m - n
4.expr \*,/,% 乘,除,取余
条件判断
基本语法:
[ condition ](注意condition前后要有空格)
#非空返回true,可使用$?验证(0为true,>1为false)
例如:[ ak ] 返回true [ ] 返回false
[ condition ] && echo OK || echo notok 条件满足,执行后面的语句
判断语句
1)= 字符串比较
2)两个整数比较
-It 小于little
-el 小于等于
-eq 等于
-gt 大于grater
-ge 大于等于
-ne 不等于
3)按照文件权限进行判断
-r 读
-w 写
-x 执行
4)按照文件类型进行判断
-f 文件存在并且是一个常规文件
-e 文件存在exist
-d 文件是一个目录
细节,if 后面又空格,[]中前后也需要空格,即便内部没有表达式也需要空格
流程控制
基本语法
if [ 条件式判断 ] 注意条件式在中括号内前后需要空格
then
代码
fi
或者 多分支
if [ 条件判断式 ]
then
代码
elif [ 条件判断式 ]
then
代码
fi
注意事项:[ 条件判断式 ],中括号和条件判断式之间必须有空格
基本语法:
case $变量名 in
"值1")
如果变量的值等于值1,则执行程序1
;;
"值2")
如果变量的值等于值2,则执行程序2
;;
.........
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
例如:
细节:注意结尾的esac!!!
基本语法1
for 变量 in 值1 值2 值3 。。。
do
程序
done
例子打印命令行输入的参数 可以看出 $* 与 $@的区别
基本语法2
for((初始值;循环控制条件;变量变化))
do
程序
done
例子:定义一个变量,从1加到100的值输出展示
基本语法
while [ 条件判断式 ]
do
程序
done
注意:while 和 [ 有空格,条件判断式 和 [ 也有空格
例子:从命令行输入一个数n,统计从1+。。。+n的值为多少
基本语法
read(选项)(参数)
选项:
-p 指定读取值式的提示符
-t 指定读取值时等待的时间(秒),如果没有在指定的时间内输入,就不再等待
参数:
变量:指定读取值的变量名
shell编程和其他编程语言一样,有系统函数,也可以自定义函数。介绍两个系统函数
系统函数
功能:返回完整路径最后 / 的部分,常用于获取文件名
basename [pathname] [suffix]
basename [string] [suffix] besename命令会删掉所有的前缀包括最后一个(’/‘)字符,然后将字符串显示出来
选项:
suffix为后缀,如果suffix被指定了,basename会将pathname或string中的suffix去掉。
例如:请返回/home/aaa/test.txt的“test.txt”部分 basename /home/aaa/test.txt
如果 basename /home/aaa/test.txt .txt 则只会返回 test
功能:返回完整路径最后 / 的前面部分,常用于返回路径部分
dirname 文件绝对路径 从给定的包含绝对路径的文件名中去除文件名(非目录部分),返回剩下的路径(目录部分)
例如:请返回/home/aaa/test.txt的“/home/aaa” dirname /home/aaa/test.txt
自定义函数
基本语法
[function] funname[()]
{
Action;
[return int;]
}
调用直接写函数名:funame [值]
例如:计算输入两个参数的和(动态的获取),getSum
需求分析
1.每天凌晨 2:30 备份 数据库 akun 到 /data/backup/db
2.备份开始和备份结束能够给出相应的提示信息
3.备份后文件要求以备份时间为文件名,并打包为 .tar.gz 的形式,例如:2021-03-12_230201.tar.gz
4.在备份的同时,检查是否有10天前的备份数据库文件,如果有则进行删除
最后使用 crontab -e 添加任务调度加入 30 2 * * * /usr/sbin/mysql_db_backup.sh
介绍
Ubuntu 是一个以桌面应用为主的开源GNU/Linux操作系统,Ubuntu基于GNU/Linux,支持x86、amd64(即x64)和ppc架构,由全球化的专业开发团队(Canonical Ltd)打造
专业的Python开发者一般会选择Ubuntu 这款Linux系统作为生产平台
温馨提示:
Ubuntu和Centos 都是基于 GNU/Linux 内核的,因此基本使用和Centos一样,他们的各种指令可以通用,只是界面和预先安装的软件有所差别
安装Ubuntu
1.查询 BIOS 虚拟化支持
2.新建虚拟机
3.选择安装镜像文件
4.创建用户
5.选择安装位置
6.指定空间大小
7.指定内存大小
8.分配cpu内核
9.配置网络适配器
10.点击完成,开始进行 Ubuntu 的安装,安装过程可能较长
11.进入登录界面
12.下一步
介绍:
安装Ubuntu成功后,都是普通用户权限,并没有最高的root用户权限,如果需要使用root权限,通常会在命令前加上 sudo,有时候感觉很麻烦
我们一般会使用su命令来直接切换到root用户,但如果没有给root设置初始密码,就会抛出 su:Authentication failure 这样的问题,所以,我们只要给root用户设置一个初始密码就好
给root用户设置密码并使用
1.输入 sudo passwd 命令,输入一般用户密码并设定root用户密码
2.设定root密码成功后,输入su命令,并输入刚才设定的root密码,就可以切换成root了,提示符$代表一般用户,提示符#代表root用户
3.以后就可以使用root用户了
4.输入exit命令,退出root用户并返回一般用户
在Ubuntu下开发一个python程序(需要使用root用户)
1)vi hello.py
2)python3 hello.py
apt是Advanced Packaging Tool 的简称,是一款安装包管理工具。在Ubuntu下,我们可以使用apt命令进行安装包的安装,删除,清理了等。类似于Windows中的软件管理工具
sudo apt-get update 更新源
sudo apt-get install package 安装包
sudo apt-get remove package 删除包
sudo apt-cache research package 搜索软件包
sudo apt-cache show package 获取包的相关信息,如说明,大小以及版本号
sudo apt-get install package --reinstall 重新安装包
sudo apt-get -f install 修复安装
sudo apt-get remove package --purge 删除包,包括环境配置文件等
sudo apt-get build-dep package 安装相关的编译环境
sudo apt-get upgrade 更新已安装的包
sudo apt-get dist-upgrade 升级系统
sudo apt-cache depends package 了解使用该包的依赖
sudo apt-cache rdepends package 查看该包被那些包依赖
sudo apt-get source package 下载该包源代码
备份Ubuntu默认的源地址
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
更新源服务器列表
先清空 sources.list 文件复制镜像网站的地址
echo ‘’ > sources.list
复制镜像网站的地址,拷贝到 sources.list 文件
更新源
sudo apt-get update
实例:
sudo apt-get remove vim 删除
sudo apt-get install vim 安装
sudo apt-cache show vim 显示软件信息
ssh介绍:
SSH为Secure Shell缩写,由IETF的网络小组所制定,SSH为建立在应用层和传输层基础上的传输协议,
SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议,常用于远程登陆,几乎所有 UNIX/LINUX 平台都可以运行SSH
使用SSH服务,需要安装相应的服务器和客户端。服务器与客户端关系:如果,A机器想被B机器远程登录,那么A机器需要安装SSH服务器,B机器需要安装SSH客户端
和Centos不一样,Ubuntu 默认没有安装SSHD服务(使用netstat 指令查看:apt install net-tools),因此,我们不能进行远程登录
安装SSH与启用
sudo apt-get install openssh-server
执行上面指令后,在当前这台linux上就安装了ssh服务端和客户端
service sshd restart
执行上面命令,就启动了 sshd服务,会监听端口22
从一台linux系统远程登录到另一台linux系统
在创建服务集群时,会用到该技术
基本语法
ssh 用户名@IP
例如:ssh [email protected]
使用ssh访问,如果访问出现错误,可以查看是否有该文件
/.ssh/konwn_ssh 尝试删除该文件解决
登出:exit或logout
Centos下载
1.日志文件是重要的系统信息文件,其中记录了许多重要的系统信息事件,包括用户的登录信息,系统的启动信息,系统的安全信息,邮件相关信息,各种服务相关信息
2.日志对于安全性来说也很重要,它记录了系统每天发生的各种事情,通过日志来检查错误发生的原因,或是受到攻击者攻击留下的痕迹
3.可以这样理解,日志是用来记录重大事件的工具
/var/log/ 目录就是系统的日志文件的保存位置
系统中常用的日志
CentOS7.6日志服务 rsyslogd ,CentOS6.x 日志服务是syslogd,rsyslogd功能更强大,rsyslogd 的使用,日志文件的格式,和syslogd服务兼容
查询linux中的rsyslogd 服务是否自启动
ps -aux | grep “rsyslogd” | grep -v “grep” 反向匹配:显示不包含grep的服务
查询 rsyslogd 服务的自启动状态
systemctl list-unit-files | grep rsyslog
配置文件:/etc/rsyslog.conf
编辑文件的格式为: *.* 存放日志文件
第一个 * 代表日志类型,第二个 * 代表日志级别
1.日志类型分为:
auth ##pam产生的日志
authenpriv ##ssh、ftp等登录信息的验证信息
corn ##时间任务相关
kern ##内核
Ipr ##打印
mail ##邮件
mark(syslog)-rsyslog ##服务内部的信息,时间标识
news ##新闻组
user ##用户程序产生的相关信息
uucp ##unix to nuix copy主机直接相关的通信
local1-7 ##自定义的日志设备
2.日志级别分为:
debug ##有调试信息的,日志通信最多
info ##一般信息日志,最常用
notice ##最具有重要性的普通条件的信息
warning ##警告级别
err ##错误级别,阻止某个功能或模块不能正常工作的信息
crit ##严重级别,组织整个系统或整个软件不能正常工作的信息
alert ##需要立刻修改的信息
emerg ##内核崩溃等重要信息
none ##什么都不记录
注意:从上到下,级别从低到高,记录信息越来越少
由日志服务 rsyslogd 记录的日志文件,日志文件包含以下4列
1)事件产生的时间
2)产生事件的服务器的主机名
3)产生事件的服务名或程序名
4)事件的具体信息
日志轮替就是把旧的日志文件移动并改名,同时建立新的空日志文件,当旧日志文件超出保存范围后就会自动删除
日志轮替文件命名
1.CentOS7使用logrotate进行日志轮替管理,要想改变日志轮替文件名字,通过 /etc/logrotate.conf 配置文件中 “dateext” 参数
2.如果配置文件中有“dateext”参数,那么日志会用日期来作为日志文件的后缀,例如:“secure-20240110“,这样日志文件名不会重叠,也就不需要日志文件的改名,只需要指定保存日志的个数,删除多余的日志文件即可
3.如果配置文件中没有”dateext“参数,那么日志就需要进行改名了,当第一次进行日志轮替时,当前”secure“日志会自动改名为”secure.1“,然后新建”secure“日志,用来保存新的日志。当第二次进行日志轮替时,”secure.1“ 会自动改名为 ”secure.2“ ,当前的”secure“日志会改名为”secure.1“,然后新建 ”secure“ 日志,用来保存新的日志,以此类推
logrotate 配置文件
/etc/logrotate.conf 为logrotate的全局配置文件
说明:也可以把某个日志文件的轮替规则写到 /etc/logrotate.d 目录,比如/var/log/boot.log
参数说明:
将自己的日志加入日志轮替
日志轮替之所以可以在指定的时间备份日志,是依赖系统定时任务,在/etc/cron.daily/ 目录,就会发现这个目录中有 logrotate 文件(可执行),logrotate 通过这个文件依赖定时任务执行
journalctl 可以查看内存日志
journalctl -n 3 ##查看最新3条
journalctl --since 19:00 --until 19:10:10 ##查看起始时间到结束时间的日志可加日期
journalctl -o verbose ##日志详细内容
journalctl _PID=1245 _COMN=sshd ##查看包含这些参数的日志(在详细日志查看)
或 journalctl | grep sshd
注意:journalctl 查看的是内存日志,重启清空
Linux启动原理:
1)首先Linux要通过自检,检查硬件设备有没有故障
2)如果有多块启动盘的话,需要在BIOS中选择启动磁盘
3)启动MBR中的bootloader引导程序
4)启动内核文件
5)执行所有进程父进程、老祖宗systemd
6)欢迎界面
在linux启动流程中,加载内核文件时关键文件:
1.kernel文件:vmlinuz-3.10.0-957.el7.x86_64
2.initrd文件:initramfs-3.10.0-957.el7.x86_64.img
自定义linux系统思路
操作步骤:
1)首先,给现有的inux添加一块大小为20G的硬盘,选择scsi类型并存为单个文件
2)添加完成后,点击确定,然后启动现有的linux,通过fdisk来给/dev/sdb 进行分区
3)对/dev/sdb 分区进行格式化 mkfs ext4 /dev/sdb1
4)创建目录,并挂载新磁盘
5)安装 grub,内核文件拷贝至磁盘
6)修改 grub2/grub.cfg 文件,添加 selinux=0 init=/bin/bash
7)创建目标主机根文件系统
8)拷贝需要的bash(也可以拷贝你需要的指令)和库文件给新的系统使用
9)现在就可以创建一个新的虚拟机,然后将默认分配的硬盘 移除掉,指向刚刚创建的磁盘即可
10)这时,很多指令没法用,比如ls,reboot等,可以将需要的指令拷贝到对应的目录即可
11)如果要拷贝指令,重新进入到原来的linux系统拷贝相应的指令即可,
12)再重启新的linux系统,就可以使用指令了
uname -a 查看当前内核版本
yum info kernel -q 检测内核版本,显示可以升级的内核
yum update kernel 升级内核
yum list-kernel -q 查看已经安装的内核
1.把需要的文件(或分区)用tar进行打包,下次需要恢复的时候,再解压覆盖即可
2.使用dump命令和restore命令
如果系统上没有两个指令,先进行安装
yum -y install dump
yum -y install restore
使用dump进行备份
使用restore进行恢复
6666端口可能无法使用,切换至8010端口可使用
webmin简单使用
语言设置:
webmin中点击configue进行配置language
IP访问控制
webmin中点击configue进行配置IP访问控制
查看进程
system中最后一个选项进程管理器
修改密码
system中点击change passwords
任务调度
system中cron任务调度
mysql
server 中点击mysql
浏览器打开显示不是私密连接,可以强制打开
忘记密码:
1) cat t.txt | cut -d '/' -f 3 | sort | uniq -c | sort -nr
2)netstat -an | grep ESTABLISHED | awk -F " " '{print $5}' | awk -F ":" '{print $1}' | sort | uniq -c | sort -nr
1.a:vim /etc/my.cnf b:在末尾加入skip-grant-tables c:service mysqld restart
d:空密码进入 e:update user set authentication_string=password("xxx") where user="root";
f:flush privileges; g:vim /etc/my.cnf h:注释掉刚刚加上的skip。。。并保存退出
i:service mysqld restart
2.cat access.log | awk -F " " '{print $1}' | sort | uniq -c | sort -nr | head -2
3.tcpdump -i ens33 host 192.168.200.1 and port 22 >> /opt/interview/tcpdump.log
4.常用的Nginx模块,用来做什么?
rewrite 模块 实现重写功能
access模块 来源控制
ssl模块 安全加密
ngx_http_gzip_module 网络传输压缩模块
ngx_http_proxy_module 模块实现代理
ngx_http_upstream_module 模块实现定义后端服务器列表
ngx_cache_purge 实现清除缓存功能
速通完了,路也越迷茫了