学习笔记(18)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习笔记(18)相关的知识,希望对你有一定的参考价值。
1.函数可以在交互模式下编辑,并通过函数名来执行,func1 () { echo function1; }如果函数名与命令名冲突,在交互式执行中,函数的定义的优先级高于别名优先级,尽量不要让函数名与命令名冲突,如前缀:func_
2.declare -f func1 查看已创建函数定义(declare -f 查看所有函数定义)
3.unset 函数名 删除函数定义
4.cmd1 || (cmd2;exit;) 退出子shell,并不退出脚本
cmd1 || { cmd2; exit; } 退出脚本
退出函数本身,使用return关键字,return 数字,函数中return返回的数字存储在$?中,可以作为判断条件
5.函数内部定义的变量的作用范围是当前shell,func1() { name=mage; echo "func1:$name"; } 该函数可以影响当前shell中定义的变量
若使变量只在内部有效,可以使用local关键字,防止修改当前shell中的同名变量 func1() { local name=mage; echo "func1:$name"; }
全局变量(export 当前shell 与子shell中有效),局部变量(name=mage 当前shell中有效),本地变量(local name=mage 只在当前函数内部有效)
函数内部使用declare时自带local特性即只在函数中有效,当前shell中无效, func1 () { declare -i num=100; echo "func1:$num"; }
使用declare全局生效的话 declare -ig num=100,则作用范围是当前shell(declare -g 选项只在centos7中可用)
函数先定义后使用,注意顺序,函数调用在前,声明在后会报错
help return 查看return关键字的帮助
引用函数可以使用source 文件名(或者 . 文件名)(如:/etc/init.d/functions),来将文件中函数调用至当前的shell中
export -f func1 使func1在全局范围内有效,包括子shell范围中
export -f 显示所有的全局函数
help test 可查看shell脚本中可用的判断参数,如-f, -e, -s等参数说明
6. . functions 调用脚本中可以调用的函数文件
action "command successful" /bin/false
action "command successful" /bin/true
action是functions中定义的函数
7.修改内核参数,可以直接指定运行级别,不再读取/etc/inittab文件来启动,Centos6中如输入a键 指定1 或 5
8.ntsysv(工具修改的其实就是文件名的首写字母) 有*号的默认启动,可以修改开机服务启动或修改,也可以通过修改文件的首写字母来设置开机是否启动
ntsysv --level=3 可以指定修改哪个级别的开机启动服务
chkconfig --list atd 查看atd服务是否开机启动
chkconfig --level 35 atd off 设置atd服务在3、5运行级别默认不自启动
chkconfig atd off atd 修改2345级别的服务器是否启动(不指定--level默认是2345运行级别)
ls /var/lock/subsys 通过判断该文件是否存在来判断服务是否启动(启动脚本中定义),服务开机时判断服务
/etc/rc3.d/下的脚本存在依赖关系,所以顺序存在先后关系,数字序号就是启动的顺序
chkconfig --add testsrv 添加自定义服务脚本(脚本要有执行权限)
chkconfig --del testsrv 从服务中删除,脚本文件依旧存在
/etc/rc.local 也可以制作开机自启动服务(不需要使用服务脚本的特有行),centos7中要手动加执行权限
service --status-all 查看所有服务的状态
yum install telnet-server 以来xinetd(按需要来确定服务) ,chkconfig --list
telnet是基于超级守护进程用来管理不经常使用的服务,需要时按照需要来启动,但是需要启动的服务设置成on状态,以便让xinetd守护进程唤醒
chkconfig telnet on 修改/etc/xinited/telnet 文件重启服务生效配置文件
xinetd 负责激活telnet服务,注意要使用chkconfig telnet on来让xinetd可以激活服务(可以通过服务ps命令来查看连接前连接后的进程观察区别,连接前是xinetd来代为监听23号端口,有链接时有真正的telnet来响应请求)
mingetty 是登录界面,因为respawn选项是再生的意思,所以mingetty不能被杀死(kill -9)
以上参考redhat5,(centos 6的原理相同,但配置文件独立)
服务脚本:
# chkconfig: 345 95 5 345:运行级别, 95是默认开启95顺序,5 是关闭的顺序 脚本中必须有的行
- 表示所有服务关闭 chkconfg: - 95 5
修复grub ,grub-install /dev/sda,救援模式下需要切根 chroot /mnt/sysimage/ 修复所有阶段(第1阶段、第1.5阶段、第2阶段)
启动菜单中selinux=0 可以在启动的时候不在启动selinux
hd0,0 第一块磁盘,第一个分区 /boot所在分区是否为第一个磁盘
/boot/grub 下的文件是备份文件 stage 修复所有阶段
修复过后,如果阶段模板文件删除重启就会报错,如果为修复之前,删除阶段模板文件,不影响系统启动
kernel (hd0,0)/vmlinuz-.. root=/dev/sda2
根文件系统加载的时候需要驱动,需要initramfs文件,因为驱动在initramfs中
rhgb:是用图形化加载操作系统引导过程
quiet:不显示内核加载信息
注意initrd 和 kernel的顺序
default=0 默认是第1个title
password magedu
grub-md5-crypt md5生成加密口令
password --md5 加密后口令
grub-crypt 生成sha512加密口令
password --encrypted 后加sha512 加密口令
以上是关于学习笔记(18)的主要内容,如果未能解决你的问题,请参考以下文章