重置RHEL7的root密码
1,重启Linux系统,在出现引导界面时按下e,进入内核编辑界面

2,在linux16参数的最末UTF-8后加上\rd.break参数,然后按下Ctrl+X来运行修改后的内核程序

3,大约30S左右系统进入紧急求援模式
求援模式下输入以下命令重置root用户密码:
# mount -o remount,rw /sysroot
# chroot /sysroot
# passwd
# touch /.autorelabel
# exit
执行reboot后系统会重启大约两次,等待重启完成后用新密码登录即可
rpm命令
rpm为了简化安装的复杂度,类似windows下的控制面板,会建立统一的数据库文件详细记录软件信息并自动分析依赖关系(仅分析依赖,还需要用户自己处理)
rpm -ivh filename.rpm 安装rpm软件
rpm -uvh filename.rpm 升级rpm软件
rpm -e filename.rpm 卸载rpm软件
yum命令
yum是为了解决软件包之间的依赖关系,yum软件仓库可以根据用户需求分析出所需软件包及其依赖关系,然后自动从服务器下载所需软件包并安装到系统上。

yum repolist all 列出所有仓库
yum list all 列出仓库中所有软件
yum info 软件包名 查看软件包信息
yum install 软件包名 安装软件包
yum reinstall 软件包名 重新安装软件包
yum update 软件包名 升级软件包
yum update 软件包名 移除软件包
yum clean all 清除所有仓库缓存
yum check-update 检查可更新的软件包
yum grouplist 检查系统中已安装的软件包组
yum groupinstall 软件包组 安装指定的软件包组
yum groupremove 软件包组 移除指定的软件包组
yum groupinfo 软件包组 查询指定的软件包组信息
system初始化进程
linux操作系统开机过程是:先从bios开始,然后进入bootloder,再加载系统内核,然后内核进行初始化,最后启动system初始化进程。初始化进程是linux系统启动的第一个进程,它需要完成相关初始化的工作,为用户提供合适的工作环境。
systemctl start 服务 启动服务
systemctl restart 服务 重启
systemctl status 服务 状态
systemctl stop 服务 停止
systemctl reload 服务 重新加载服务配置文件(不重启服务)
systemctl enable 服务 设置服务开机自启
systemctl disable 服务 开机不自动启动
systemctl is-enabled 服务 查询该服务是否为开机自启
systemctl list-unit-files --type=service 查询各个级别下服务的启动与禁用情况
systemctl 列出所有的系统服务
systemctl poweroff 系统关机(=init 0)
systemctl reboot 重新启动(=init 6)
强大的shell
一般来讲,计算机是由运算器、控制器、存储器、输入/输出设备组成,而让各个硬件各司其职又能协同运行的东西就是系统内核,linux内核完成硬件资源的分配和调度管理。由此可见内核对于系统的重要性,一般不建议直接去编辑内核中的参数,而是让用户通过基于系统调用接口开发出的程序或服务来管理计算机

shell是一个命令行工具,充当的是人与内核(硬件)之间的翻译官
linux常用命令
1,echo 内容 打印显示
2,date 显示系统时间
date -s "20171221 12:30:12" 修改系统时间
3,wget [参数] 下载地址 下载网络文件
参数:-b后台下载模式 -P下载到指定目录 -t最大尝试次数 -c断点续传 -p下载页面内所有内容,包括图片、视频等 -r递归下载
(http://man.linuxde.net/wget)
4,ps 查看系统中的进程状态,通常结合管道命令grep使用-a显示所有进程 -u显示用户和其他详细信息 -x显示没有控制终端的进程 -e显示全部进程 -f全格式显示
进程状态:R运行 S中断 D不可中断 Z僵尸进程 T停止(收到停止信号后停止)
5,top命令 动态监视进程和系统负载信息
6,pidof 查询进程的pid值
7,kill 参数 进程PID 用于终止进程
8,killall 参数 服务名 终止该服务对应的全部进程
9, ifconfig [网络设备] [参数]
参数:up启动指定的网卡设备 down关闭网卡设备
10,uname -a 查看系统内核和系统版本信息
11,uptime 查看系统负载信息,显示当前系统时间、系统已运行时间、启动终端数量和平均负载值信息。负载值越低越好,尽量不要长期超过1,生产环境不要超过5
12,free -h显示当前内存使用情况
13,who 查看当前登入主机的用户终端信息
14,last 查看系统的登录记录
15,history 显示近1000条执行的命令记录,可在/etc/profile下修改HISTSIZE变量值
history -c 清空本机的命令记录
16,sosreport 用于收集系统配置及架构信息并输出诊断文档。
17,cat -n 文本名 显示行号
18,tr 原始字符 目标字符 替换文档中的字符
cat anaconda-ks.cfg | tr [a-z] [A-Z] 将文本中的小写字母替换为大写
19,wc [参数] 文本 用于统计文本的行数、字数和字节数
20,stat 文本 用于查看文本的存储信息和时间信息
21,diff -brief 文本A 文本B 比较两个文本的差异(无差异时无结果返回)
22,touch 新建文本或设置文件时间
touch -d "2017-12-21 12:21:11" 文本
23,mkdir 新建文件夹
mkdir -p /a/b/c/d 可创建逐级文件夹
24,cp/mv/rm
25,dd [参数] 用于按照指定大小和个数的数据块来复制或转换文件
dd if=/dev/zero of=/dev/sdx count=2 bs=10G 初始化磁盘/dev/sdx
dd if=/dev/zeor of=/root/test.txt count=1 bs=1M 在root目录下新建1M大小的test.txt文件
/dev/null是黑洞 能无限丢弃垃圾却不占空间
/dev/zero不占用内存,却能提供无穷无尽的数据
26,file 文件名 查看文件类型(文本、目录、设备都统称为文件)
27,tar [参数] [文件]
参数:-c创建压缩文件 -x解压缩 -t查看压缩包内有哪些文件 -z用gzip解压或者压缩 -j用bzip2压缩或解压 -v显示解压或压缩的过
程 -f目标文件夹 -p保留原始的权限与属性 -p使用绝对路径来压缩 -c指定解压到的目录
tar -czvf x.tar.gz /root/test.txt
28,grep用于文本中关键词搜索 grep [参数] [搜索内容] [文本]
参数:-b把可执行文件当文本文件来搜索 -c仅显示找到的行数 -i忽略大小写 -n显示行号 -v反向选择(列出没有关键词的行)
29,find 查找文件 find [位置] [条件] [数值]
find / -name "test" 根目录下查找名称包含test的文件
30,awk '{print $1}' 表示获取结果的第一个域(第一竖行)
free -m |grep Mem |awk '{print $4}' 获取剩余内存容量 (grep是显示匹配字符的行)
四、管道符、重定向与环境变量
1,输入输出重定向
标准输入重定向,文件描述符为0,默认从键盘输入,也可以从其他文件或者命令中输入
标准输出重定向,文件描述符为1,默认输出到屏幕
错误输出重定向,文件描述符为2,默认输出到屏幕
2,命令格式
输入重定向
“命令 < 文件”将文件作为命令的标准输入
“命令 << 分界符” 从标准输入中读入,直到遇到分界符才停止
“命令 < 文件1 > 文件2” 将文件1作为命令的标准输入并将标准输出到文件2
wc -l < readme.txt 将readme文件作为wc命令的输入,统计文档行数
输出重定向
“命令 > 文件” 将标准输出重定向到一个文件中(清空原有文件的数据)
“命令 2> 文件” 将错误输出重定向到一个文件中(清空原有文件的数据)
“命令 >> 文件” 将标准输出重定向到一个文件中(追加到原有内容的后面)
“命令 2>> 文件” 将错误输出到重定向到一个文件中(追加到原有内容的后面)
“命令 >> 文件2 >&1”或“命令 &>> 文件”将标准输出与错误输出共同写入到文件中(追加)
备注:错误输出重定向就是当命令执行错误时将错误重定向到文本,而当命令正确时是不执行重定向的
ls readme.txt >/root/test.txt
ls readmeno.txt 2>/root/test.txt
3,管道符
命令1 | 命令2 :把命令1的输出作为命令2的标准输入
cat /root/readme.txt | grep "hehe"
echo "password" |passwd --stdin root (只需要知道这条命令可以修改root密码为password即可)
4,通配符
*表示匹配0个或多个字符 ?表示匹配单个字符 [0-9]表示匹配0-9之间的单个数字的字符 [a-c]表示匹配abc三个字符中的任意一个
ls -l /dev/sd*
ls -l /dev/sd?
ls -l /dev/sd[a-c]
ls -l /dev/sda[1-10]
5,转义符
\ 使反斜杠后面的一个变量变为单纯的字符串
" 转义其中所有的变量为单纯的字符串
"" 保留其中的变量属性,不进行转义
'' 把其中的命令执行后返回结果
6,环境变量
echo $PATH 可以查看当前配置的环境变量,多个变量间用:隔开
PATH=$PATH:/root/bin 增加/root/bin变量
export 变量名 可以将一般变量转换为全局变量
五、vim编辑器与shell脚本
1,vim常用命令
dd 删除/剪切光标所在行
5dd 删除/剪切从光标处开始的5行
yy 复制光标所在整行
5yy 复制从光标开始处的5行
n 显示搜索命令定位到的下一行字符串
N 显示搜索命令定位到的上一行字符串
u 撤销上一步操作
p 将之前剪切或复制的数据粘贴到光标后面
:set nu 显示行号
:set nonu 不显示行号
:命令 执行该命令
:整数 跳转到该行
:s/one/two 将当前光标所在行的第一个one换成two
:s/one/two/g 将当前光标所在行的所有one换成two
:%s/one/two/g 将全文的所有one换成two
/字符串 从上往下搜索字符串
?字符串 从下往上搜索字符串
2,配置yum库
#cd /etc/yum.repos.d/
#vim rhel7.repo
[rhel7]
name=rhel7
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0
#mkdir -p /media/cdrom
#mount /dev/cdrom /media/cdrom
#vim /etc/fstab
/dev/cdrom /media/cdrom iso9660 defaults 0 0
可以测试安装httpd
3,shell脚本
接受用户的参数 sh test.sh [参数]
$0 对应的是当前shell脚本的名称
$# 对应的是总共有几个参数
$* 对应的是所有位置的参数
$? 显示上一次命令执行的返回值
$1 表示位置为1的参数
4,shell下判断用户的参数
判断结果为真则返回0,结果为假则返回非0(可使用$?显示上一条命令的返回值)
a,文件测试语句:用指定条件来判断文件是否存在或权限是否满足
-d测试文件是否为目录类型
-e测试文件是否存在
-f判断是否为一般文件
-r测试当前用户是否有权限读取
-w测试当前用户是否有权限写入
-x测试当前用户是否有权限执行
#[ -d /etc/fstab ] #$? 1
b,逻辑测试语句
shell中“与”是&&,表示它前边的命令执行成功后才会执行后边的命令,因此也可以写成
#[ -e /etc/fstab ] && echo"exist"
shell中“或”是||,表示它前边的命令执行失败后才会执行后边的命令,因此也可以写成
#[ -e /etc/hahaha] || echo"notexist"
shell中“非”是!,它表示把条件语句中的结果取反值
c,整数比较运算符
-eq 是否等于
-ne 是否不等于
-gt 是否大于
-lt 是否小于
-le 是否等于或小于
-ge 是否大于或等于
#FREEMEM='free -m |grep Mem |awk '{print $4}''
#[$FREEMEM -lt 1024 ] && echo"内存不足了"
d,字符串比较:用于判断字符串是否为空值,或两个字符串是否相同
=比较字符串内容是否相同
!=比较字符串内容是否不同
-z判断字符串是否为空值
#[ -z $string ] #echo #?
5,流程控制语句
a,if条件判断
if 条件成立
then 执行条件成立的语句
else 执行不成立的语句
fi
#!/bin/bash
pwd="/root/haha"
if [ ! -e $pwd ]
then
mkdir $pwd
fi
if 条件1成立
then 执行1
elif 条件2成立
then 执行2
else 执行3
fi
Linux中read是脚本读取用户输入的指令
read -p "please enter you age:" NUM 其中-p是为了在屏幕打印提示,NUM是变量
b,for循环
for 变量名 in 取值列表
do
执行命令
done
#vi user.txt
zhangsan
lisi
wangwu
#!/bin/bash
read -p "please enter a password for user:" PASSWD
for UNAME in `cat users.txt`
do
id $UNAME &> /dev/null
if [ $? -eq 0 ]
then
echo "user already exists"
else
useradd $UNAME &> /dev/null
echo "$PASSWD" | passwd --stdin $UNAME &> /dev/null
if [ $? -eq 0 ]
then
echo "$UNAME,add success"
else
echo "$UNAME,add fail"
fi
fi
done
需要注意:UNAME通过cat对比本地文件user.txt时,是··符号(~号),不是单引号。
让脚本从文档中读取主机列表,然后逐个测试这些主机是否在线
#!/bin/bash
for HOST in `cat /root/hosts.txt`
do
ping $HOST -c 2 &>/dev/null
if [ $? -eq 0 ]
then
echo "$HOST up"
else
echo "$HOST down"
fi
done
c,while条件循环语句
while是根据某些条件来重复执行命令的,不同于for循环有目标有范围的使用条件
while 条件
do 命令
done
while 如果条件为true且不变,则只有遇到exit时才会终止执行。
d,case条件语句
case 变量值 in
模式1)
命令1
;;
模式2)
命令2
;;
......
*)
默认命令
esac
#!/bin/bash
read -p "please enter:" KEY
case $KEY in
[a-z] | [A-Z])
echo "this is a zimu"
;;
[0-9])
echo "this is a num"
;;
*)
echo "teshuzifu"
esac
6,计划任务服务程序
一次性任务:只执行一次的计划任务
at 时间 =>输入要执行的命令=>ctrl+D即可结束计划任务编写
at -l :可以查看已经设置好但还未执行的计划任务
atrm 任务号:可以删除计划任务
周期性任务:系统周期性、有规律的执行某些具体任务
crontab -e:创建、编辑计划
crontab -l:查看当前计划
crontab -r:删除计划
如果当前是管理员登录的系统,还可以在crontab命令中加上-u参数来编辑他人的计划任务
“分 时 日 月 星期 命令”,如果有些字段没有设置,需要使用占位符*(注意,分是不能占位的)
例如每周1,3,5 23:12分重启服务器
#crontab -e
12 23 * * 1,3,5 /usr/sbin/reboot
需要说明的是,除了用逗号表示多个时间段外,还可以用减号-表示一段时间,例如“日”的取值为12-15,则表示每月的12-15号执行
;也有用除号/来表示执行任务的间隔时间,例如/2表示每隔2分钟执行一次任务。
需要注意的是,crontab下命令都必须使用绝对路径,例如/usr/sbin/reboot,可用whereis 命令 来查询命令的绝对路径。
本文档详述了RHEL7系统的基本管理操作,包括重置root密码、使用rpm和yum进行软件包管理、初始化进程控制、shell命令应用、文本处理技巧及计划任务设置等关键内容。
2万+

被折叠的 条评论
为什么被折叠?



