《Linux系统命令及Shell脚本实践指南》
作者的运维项目:
虚拟化平台以及自动化运维
作者的运维习惯:
在日常繁忙的工作基础上,记录一些知识要点,并坚持整理成册
现在的运维:
“降低成本,提升用户体验”为目标
(1) “降低成本”
即要求运维技能的提升
保证系统稳定、高可用、可拓展性强
(2)“提升用户体验”
一是稳定,不能频繁宕机
二是要快,天下武功,唯快不破;
三是界面友好,不能半天找不到操作按
Linux中的关键技术目录:
系统讲解了Linux系统结构、
主流服务器搭建及故障排除、
用户权限管理、
磁盘存储管理、
文件系统管理、
内存管理、
进程管理、
Shell编程
实用性极强的脚本案例
相关IT主题:
Linux系统管理、高性能计算、高可用集群、云计算
截取章节-例行任务处理
(1)如果任务是周期性的执行 其命令为cron
(2)如果只是在某一个特定的时间执行一次 其命令为at
任务示例:
<at命令说明>:
使用命令ctrl +D表示输入结束
atq命令 用于查看当前使用at命令的任务调度列表
atrm命令 删除已经进入任务队列的任务
[root@aliyun ~]# at now + 30 minutes
at> cat /etc/passwd now
at>
job 3 at Sun Sep 27 10:50:00 2020
[root@aliyun ~]# atq
3 Sun Sep 27 10:50:00 2020 a root
任务编号 执行时间
<cron 命令说明>
启用cron命令:
[root@aliyun ~]# systemctl start crond
crontab管理计划任务:
设置自己的计划任务,并使用-e参数来编辑任务
crontab -e
crontab的基本格式:
分钟 小时 日期 月份 星期几
-
* * * * command
1~59 0~23 1~31 1~12 0~6
用户相关命令总结
shell
摘要说明:
Bash shell 有两种工作模式:
①互动模式 ②脚本模式
模式说明:
①互动模式: 指的是由系统管理人员直接通过键盘执行命令
②脚本模式: 将所要执行的命令写在该文件中,由Bash Shell读取并执行。
学习Shell最重要的原因—将一切工作都自动化处理
详细解释:
一定情况下:为此必须加入更多的判断功能;
重复执行的任务:使用循环
如何更好的学习shell:
要想学精却需要经过大量阅读、使用、出错并从错误中总结的过程,这样才能不断提高对其的掌控能力
确定系统中可用的shell版本:
[root@aliyun shell]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/ksh
/bin/rksh
变量
CDPATH
当目录名较长时可以使用CDPATH 变量
作用: 使用CDPATH变量,可以迅速地进入该目录
说明: 当执行cd network-scripts时,先会在当前目录进行判断,如果没有则会使用CDPATH中的。
【示例: /etc/sysconfig/network-scripts】
[root@aliyun ~]# CDPATH="/etc/sysconfig/"
[root@aliyun ~]# cd network-scripts
/etc/sysconfig/network-scripts
[root@aliyun network-scripts]# cd
[root@aliyun ~]# pwd
/root
常用变量说明:
EUID
说明:记录当前用户的UID
FUNCNAME
说明:在用户函数体内部,记录当前函数体的函数名
HISTCMD
说明:记录下一条命令在history命令中的编号
HISTFILE
说明: 记录history命令记录文件的位置
HISTFILESIZE
说明:记录History命令记录的命令的行数
HOSTNAME
说明:记录当前的主机名
HOSTTYPE
说明:展示主机的架构,是I386还是i686 还是x86_64
MACHTYPE
说明: 主机类型的GNU标识,这种标识有统一的结构
统一的结构: “主机架构-公司-系统-gnu”
LANG
说明:设置当前系统的语言环境
PWD
说明:记录当前目录
OLDPWD
说明:记录之前的目录
PATH
说明: 代表命令的搜索路径
(1)内建命令
由bash 自身提供的命令,而不是文件系统中的某个可执行文件。
“内建” 人类具备语言能力就是内建的能力
为了更精细的调试运行shell,可以借助第三方工具bashdb。
(2)判断是否是内建命令: type
#cd命令是否内建命令
[root@aliyun shell]# type cd
cd is a shell builtin
#ifconfig命令不是内建命令,而是一个外部文件
[root@aliyun shell]# type ifconfig
ifconfig is /usr/sbin/ifconfig
(3)##执行程序"." 号
.号用于执行某个脚本,甚至脚本没有可执行权限也可以执行
[root@aliyun shell]# ./HelloWorld.sh
-bash: ./HelloWorld.sh: Permission denied
[root@aliyun shell]# . ./HelloWorld.sh
Hello World
##执行程序"source"
source也可读取并在当前环境中执行脚本,同时还可返回脚本中最后一个命令的返回状态。
如果没有返回值则返回0,代表执行成功;
如果未找到指定脚本,则返回false;
eval 参数
将所跟的参数作为shell的输入,并执行产生的命令:eval