分类 Linux 下的文章

shell大括号参数扩展

假设我们定义了一个变量为:file=/dir1/dir2/dir3/my.file.txt

字符串截取按分隔符截取

* ${file#*/}截取第一个/右边的字符串 dir1/dir2/dir3/my.file.txt
* ${file##*/}截取最后一个/右边的字符串 my.file.txt
* ${file%/*}截取最后一个/左边的字符串 /dir1/dir2/dir3
* ${file%%/*}截取第一个/左边的字符串 (空值)

总结

* #语法为 # * separator 截取separator右边的字符串
* %语法为 % separator *截取separator左边的字符串
* 一个#或%表示贪婪截取
* 两个#或%标示非贪婪截取

- 阅读剩余部分 -

利用密钥来免密码登录

主机1:192.168.100.248 Linux主机
主机2:192.168.100.249 Linux主机
主机1 生成密钥(公钥和私钥),把公钥复制到主机2上

1.主机1生成密钥


[root@server3 ~]# ssh-keygen -b 1024 -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):   #密钥的保存位置
Enter passphrase (empty for no passphrase):                #密钥短语
Enter same passphrase again:                                        #密钥短语
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.    #已经生成了公钥和私钥文件
The key fingerprint is:
98:ab:82:16:c9:54:f5:41:6e:74:f9:e6:ea:5a:0e:82 root@server3.com

- 阅读剩余部分 -

Linux系统启动流程

Linux系统启动流程大概总结下来是这么一个过程:

    POST-->BootLoader(MBR)-->Kernel(硬件探测、加载驱动、挂载根文件系统、/sbin/init)-->init(/etc/inittab:设定默认级别、系统初始化脚本、启动及关闭对应级别的服务、启动终端)

详细分析上面的流程

第1步:

    1.POST 打开电源按钮,CPU会把位于CMOS中的BIOS程序加载到内存里面执行,BIOS会探测并识别主板上的所有硬件,然后按照BIOS程序里面设定的启动顺序(1.光驱 2.硬盘 3.软驱 等),它会挨个去这些设备里面找启动设备,一旦找到就停止寻找,如:第一个先从光驱找到,但是没有找到光盘,那么找第二个硬盘,找到硬盘也不一定能启动,要看硬盘是否包含MBR,如果有MBR那就从硬盘启动,如果没有就继续向下寻找,如果一直没有找到可启动的设备,那么本次启动宣告失败

    开电之后,CPU就到出厂时指定的内存地址空间(是由内存和CMOS组成)去加载BIOS程序(存储在CMOS里面),BIOS是由一系列的汇编指令组成,用于进行硬件检测(把检测到的结果存储到内存的低地址空间里,是由于BIOS 的寻址能力有限),BIOS首先会探测有几块内存以及其他设备是不是都基本正常,有任何问题就会报警,就无法往下启动,接着去扫描ISA总线和PCI总线去查找各关联到的设备,并且能指挥各硬件完成中断注册和IO端口注册

- 阅读剩余部分 -

详解 /etc/inittab 文件

当内核初始化后,就会启动第一个进程 init,init进程会进行一系列的系统初始化工作,init是根据什么来进行初始化的?

init 会读取/etc/inittab文件(针对CentOS 5 系列),执行里面的内容来进行初始化工作,这个文件是一定的格式。

获取inittab文件的帮助,输入 man inittab 命令

过滤掉空白行和以#号开始的行,内容如下:


[root@server1 ~]# egrep -v '^$|^#' /etc/inittab
id:3:initdefault:
si::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
x:5:respawn:/etc/X11/prefdm -nodaemon

- 阅读剩余部分 -

chkconfig 命令本质

chkconfig 命令本质就是 创建软连接 如下图:

Image.png

chconfig --level 2345 puppet off 等价于 chkconfig puppet off (不用--level 指定级别时,默认是2345)

这条命令是设置 puppet 服务在 2345 级别 不自动启动,当执行这条命令时,会在

rc2.d rc3.d rc4.d rc5.d 这几个目录新建软连接 K02puppet 从 /etc/rc.d/init/puppet 脚本

chkconfig puppet on 这个就是在2345级别时,开机自动启动

当执行这条命令时,会在

rc2.d rc3.d rc4.d rc5.d 这几个目录新建软连接 S98puppet 从 /etc/rc.d/init/puppet 脚本

那这个 K02puppet S98puppet 中的 02 和 98 是怎么来的?

- 阅读剩余部分 -