初始化进程,linux5,6使用的是init命令,到linux7则使用的是systemd,但它不仅仅是做初始化进程,它还接管了service、chkconfig等配置任务
systemctl start 服务名称 ----------------------------启动服务
systemctl restart 服务名称 -----------------------------重启服务
systemctl stop 服务名称 -----------------------------关闭服务
systemctl status 服务名称 ------------------------------查看服务状态
systemctl enable 服务名称 -----------------------------加入到启动项
查看系统服务日志,他们都会被写入到/var/log/message文件内
注意:systemd是服务名称 systemctl是配置工具
kdump是收集我们系统内核的报错信息的,用于系统排错和调优
bash的优点:
1、通过tab键对命令进行自动补齐
2、通过方向键可以查看我们执行过的命令
3、可以编辑强大的bash脚本
4、具有实用的环境变量功能。
命令 参数 对象(命令、参数、对象之间必须有空格做间隔,空格可以是1一个也可以是多个)
参数之间是可以合并的,短格式和短格式之间可以合并,并且保留一个“-”,短格式和长格式之间不可以合并,长格式和长格式之间也不能合并。
man命令:是用来查看一个命令的帮助文档的
1、echo :将字符串输出到屏幕上,通常与管道符搭配,提取变量的内容,并将变量的内容输出到屏幕上
2、date: 查看系统时间,注意参数 -s等
3、reboot: 重启系统
4:poweroff : 关机,类似的命令还有 shutdown , init 0等
5、wget:用于下载文件用的
-b:后台下载模式
-P:下载到指定目录
-t:最大尝试次数
-c:断点续传
-p:下载页面内所有资源,包括图片、视频
-r : 递归下载
ps : 用于显示系统的进程信息
-a 查看所有进程的信息
-u 显示进程的详细信息
-x 即使进程没有终端也帮你显示出进程的信息
6、top:用于动态的查看系统进程的命令
显示的状态参数描述
R:正在运行,正在为用户提供服务。
S:正在休眠,等待为用户提供服务。
D : 进程不可中断。
Z:僵尸进程
T:已经停止的进程。
7、pidof: 用于获取一个服务的进程号码
8、kill:根据进程编号对应的服务结束一个进程,例如:kill + 进程号码
9:killall:结束一个服务对应的所有进程,例如:kill + 服务名称
10、ifconfig:用于查看网卡的配置信息,如果想确定网卡的IP地址配置是否是动态分配还是静态分配,可以查看 cat /etc/sysconfig/network-scripts/ifcfg-eno16777736的信息,查看里面的BOOTPROTO的值,如果是DHCP,就是动态分配,如果是NONE,就是静态分配。
11、uname: 用于查看系统架构及内核信息,搭配的参数有-a
12、uptime:用于查看linux系统的负载情况
13:free:用于查看系统的内存信息的,默认以KB为单位显示,如果想更人性化显示,就可以输入参数-h
14: who:用于查看我们的终端数量的详细信息,功能一样的命令还有w
15:last:用于显示系统的登录记录(仅供思考),它的记录信息可被修改,这个信息是系统的日志信息(可被修改)
16:history:用于查看系统历史执行的命令记录,如果想重复执行某条命令,可以使用!加history显示的历史命令的编号,比如:!45, history -c用于清空history里的命令执行记录
17、sosreport:当系统出现故障的时候,可以通过sosreport搜集一下系统故障信息,可以发给redhat进行故障分析。
18、pwd:显示当前所在的工作目录
19、 cd:用于切换目录, cd ~ 用于切换到当前用户的家目录,cd - 返回上一次所在的工作目录,cd … 上一级所在的目录
20、 cat:查看一个文件的内容,适用于查看短小文件,cat -n在查看文件内容的同时,加上行号。
21、 more:查看一个文件的内容,适用于大文件
22、head:如果想看文件的前10行内容,可以用head命令+参数-n 10, 比如:head -n 10 wenjian.txt
23、tail:如果想看文件的后10行内容,可以用tail命令+参数stat -n 10,比如:tail -n 10 wenjian.txt
24、tail -f 就是实时刷新一个文件,一般与日志文件进行搭配 例如:tail -f /var/log/message
25、wc:用于统计一个文件的行数,字节数、单词数 -l:统计行数; -w:统计单词数;-c:统计字节数 常用:wc -l /etc/passwd
26、stat:用于查看一个文件的最后一次访问时间,真实修改文件内容修改时间、修改文件属性及信息的时间 inode保存的是一个文件的属性信息,block保存的是一个文件的真实信息
27、cut:按列提取文件信息,参数-d表示指定的分隔符,-f 1 ,例如提取/etc/passwd 文件里面第一列的账号信息,可以使用 cut -d : -f 1 /etc/passwd
扩展一下 统计系统里面有多少个账号 可以通过管道符进行命令的输入 ,例如:cut -d : -f 1 /etc/passwd | wc -l
28、diff:对比两个文件的不同之处,并显示出来,如果只想知道两个文件是否不同,而不列出两个文件的不同之处,可以加参数 --brief
29、touch:新建一个文件(空白文件),如果要修改一个文件的ctime,mtime,就用touch -d参数,例如:touch -d “09:00” ceshi
30、mkdir:新建一个目录,如果新建一个嵌套递归的目录,那么可以使用mkdir -p,例如:mkdir -p /a/b/c/d/e/f
31、cp:将一个文件从一个地方复制到另一个地方,cp -a 是复制文件的时候保持原有文件的属性
32、mv:将一个文件从一个地方剪切到另一个地方,在同一个目录下对一个文件进行剪切操作的本质就是对这个文件进行重命名
33、rm:删除一个文件,rm -f是强制删除的意思。 rm -r是删除一个目录, rm -rf是强制删除一个目录
34、dd:按照指定的大小进行复制,例如 dd if=a.txt of=b.txt bs=20 count=1 bs是块的大小,count是块儿的个数
35、file:用来查看一个文件的类型
36、tar:打包跟解压的操作,tar -czvf c:打包归档的意思,z:gzip压缩的格式 j:bzip2 v:显示打包或解压的过程 f:打包或解压后文件的名称
37、grep:过滤命令,把一个文件里包含关键字的内容全部提取出来,例如:grep network anaconda-ks.cfg ,grep -n过滤完内容之后并显示行号,grep -v反选过滤
38、find: 查找搜索命令 后面加-name参数,-name 后面跟要查找的文件名; -user 后面跟用户,作用是查找所有后面归该用户的文件
find后面可以跟-exec参数 参数后面跟要执行的命令,作用是将前面的查找的内容作为后面命令执行的输入, 后面用;作结束符,例如:查找从根目录下查找所有属于linuxprobe用户的文件,然后复制到root目录下:
find / -user linuxprobe -exec cp -rf {} /root ;
39、alias :给要执行的命令建立一个别名,例如: alias hh=“grep -n network anaconda-ks.cfg”
直接输入alias,系统会列出当前系统建立的命令的别名列表
40、hostnamectl : 用于设置主机名,例如:hostnamectl set-hostname lijianbo
重定向分为输入重定向和输出重定向,输出重定向的作用就是将原本要输出到屏幕上的信息输出到文件或命令中执行,输出包括:标准输出跟错误输出,输入的符号是:<,输出的符号是:>,错误输出的符号是2>,
标准输出与错误输出都包括覆盖输出与追加输出
覆盖输出的符号:>
追加输出的符号:>>
将标准输出和错误输出同时输出到一个文件中的符号是,&>
管道符的作用,将原先需要输出到屏幕上的内容交由给后面的命令再来执行
通配符的作用,是匹配一个或多个任意字符,*通配一个或多个字符,?通配单个字符,精准通配【0-9】,通配0、1、2、3、4、5、6、7、8、9
如果一个用户的终端属性被设置成/sbin/nologin,那么这个用户就不能登录终端了
passwd用来重置用户的密码的,passwd有一个–stdin参数,用于从一个管道符中读取内容,然后进行密码的修改,比如:想修通过管道符修改root密码,可以通过执行命令: echo “新密码” | passwd --stdin root
$$ :两个$符显示的是当前进程的编号
\:转义字符,去除符号后的特殊功能,保留原意
’ ':是将单引号里的内容进行全部转义
:反引号,作用是会执行反引号里面的命令
命令的执行方式(步骤):
1、如果输入的是命令的绝对路径,那么这个命令会直接进行执行,优先级最高!
2、如果输入命令不是绝对路径,那么它会先检测输入的命令是否是执行命令的别名
3、区别是否是系统的内部命令或外部命令
如果想在PATH变量里面添加新的查询路径信息,那么可以通过以下命令来进行执行:
PATH=$PATH:/root/bin
特别注意:每个用户建立的变量都是局部变量,如果想把局部变量升级为全局变量,通过以下命令进行:
export 变量名 ,例如:将用户建立的变量名WORK升级为全局变量,可以使用export WORK
linux里一切皆文件,配置一个服务就是配置这个服务对应的配置文件
vim编辑器主要有三种运行模式:1、命令模式;2、输入模式;3、末行模式
vim的使用技巧:
1、dd:删除(剪切)光标所在的整行。
2、5dd:删除(剪切)从光标处开始的5行。
3、yy:复制光标所在的整行。
4、5yy:复制从光标处开始的5行。
5、p:将之前删除(dd)或复制(yy)过的数据粘贴到光标后。
6、u:撤销,还原操作。
7、/ :/后面跟要搜索的关键词,n是下一个匹配项,它是从上往下进行搜索
8、?:?后面跟关键词,是从下网上进行匹配,从下网上进行搜索。
9、 :数字 :将光标快速定位到数字那一行
RHEL7 通过vim编辑器编辑网卡的设置,路径是:
vim /etc/sysconfig/network-script/ifcfg-eno16777728
BASH脚本的格式:
1、脚本的声明,用来说明脚本的执行环境 例如: #!/bin/bash
2、脚本的注释,介绍脚本的功能及相关信息 例如: #
3、脚本主体
BASH脚本里的一些内置变量
例如:echo $1,$3,$5 用于输出第1个,第3个,第5个参数的信息
例如:echo KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲,* 用于输出接收到参数的个数,
∗
用
于
输
出
接
收
到
的
参
数
分
别
是
什
么
例
如
:
*用于输出接收到的参数分别是什么 例如:
∗用于输出接收到的参数分别是什么例如:? 用于判断上一条命令是否执行成功
例如:$0 用于输出脚本的名称,也就是需要执行脚本的文件名
条件测试语句可以分为4种:
1、文件测试语句;
例如:[ -d /etc ] ,通过echo $?来输出上一条命令的执行情况,0,即为成功,1,即为失败,从而判断文件是否是一个目录;
例如:[ -f /etc ] , 用于判断etc是否是一个文本文件,或者是个一般文件
例如:[ -r /etc ] , 用于判断一个文件是否有读取权限
例如:[ -w /etc ] , 用于判断一个文件是否有写权限
例如:[ -x /etc ] , 用于判断一个文件是否有执行权限
例如:[ -e /etc ] , 用于判断一个文件是否存在
2、逻辑测试语句;
(1)、&&逻辑与,当前面的命令成立的时候,执行后面的语句。
(2)、||逻辑或,当前面的命令不成立的时候,执行后面的语句。
例如:判断一个用户是否是root用户的语句:
[ $USER = root ] && echo “root” || echo “user”
3、逻辑值比较语句;
(1)、-eq : 是否等于
(2)、-ne: 是否不等于
(3)、-gt: 是否大于
(4)、-lt: 是否小于
(5)、-le: 是否等于或小于
(6)、-ge: 是否大于或等于
应用:
[ free -m | grep Mem: | awk '{print $4}'
-le 1024 ] && echo “Insufficient Memory” || echo “Memory Full”
4、字符串比较语句;
(1)、 -z判断一个变量是否被使用过 例如: [ -z HOHO ]
逻辑判断语句:
(1)、if逻辑判断语句:
1、单分支格式:
if 条件测试操作
then 命令序列
fi
例如: #!/usr/bin
DIR=/media/haha
if [ ! -e $DIR ]
then
mkdir -p $DIR
fi
2、双分支格式:
if 条件测试操作
then 命令序列1
else 命令序列2
fi
例如: #!/bin/bash
ping -c 3 -i 0.2 -W 3 $1 &>/dev/null #/dev/null 是目录黑洞,将输出输出到该目录可以保证屏幕的清爽性
if 【 $? -eq 0 ]
then
echo "$1 is On-line"
else
echo "$1 is Off-line"
fi
3、多重分支格式:
if 条件测试操作1
then 命令序列1
elif 条件测试操作2
then 命令序列2
else
命令序列3
fi
例如:#!/bin/bash
read -p "Enter:" GRADE
if [ $GRADE -ge 85 ] && [ $GRADE -le 100 ] ; then
echo "$GRADE IS Excellent"
elif [ $GRADE -ge 70 ] && [ $GRADE -le 84 ] ; then
echo " $GRADE is Pass"
else
echo "$GRADE IS Fail"
fi
for循环判断语句:
例子1:
#!/bin/bash
read -p “Input your password:” PASSWORD
for UNAME in cat users.txt
do
id $UNAME >/dev/null
if [ $? -eq 0 ]
then
echo “Already Exists”
else
useradd KaTeX parse error: Expected 'EOF', got '&' at position 7: UNAME &̲>/dev/null …PASSWORD" | paaswd --stdin $UNAME &> /dev/null
if [
?
−
e
q
0
]
;
t
h
e
n
e
c
h
o
"
? -eq 0 ];then echo "
?−eq0];thenecho"UNAME Create Success"
else
echo “$UNAME Create Faile”
fi
fi
done
例子2:
#!/bin/bash
for IP in `cat ip.txt`
do
ping -c 3 -i 0.2 -W 3 $IP &> /dev/null
if [ $? -eq 0 ]; then
echo "Host $IP is ON-LINE"
else
echo "HOST $IP is OFF-LINE"
fi
done
while循环判断语句:
例子:
#!/bin/bash
PRICE=$(expr $RANDOM % 1000)
TIMES=0
while true
do
read -p “Please input your number:” INT
let TIMES++
if [ $INT -eq $PRICE ]
then
echo “OK!”
echo $TIMES
exit 0
elif [ $INT -gt $PRICE ]
then
echo “HIGH”
else
echo “LOW”
fi
done