************************part 1: 系统启动*********************
1.系统的启动流程
-->power on
-->bios(basic input output system),加电自检
-->看看mbr
-->grub | lilo
-->内核(vmlinuz-2.6.32-71.el6.i686) | initrdxxxx.img(RHEL5) initramfs-2.6.32-71.el6.i686.img(RHEL6)
-->init -->启动一个超级进程
-->/etc/inittab -->确定runlevel
-->/etc/rc.sysinit(主机名,ip,检查磁盘,挂载文件系统) --/etc/rc.sysinit -> rc.d/rc.sysinit:/etc/rc.sysinit是/etc/rc.d/rc.sysinit的软链接
-->/etc/rc.d/rcX.d/ -->启动运行级别X的脚本
-->/etc/rc.local --/etc/rc.local -> rc.d/rc.local:/etc/rc.local是/etc/rc.d/rc.local的软链接
2.经典/etc/inittab
#
# inittab This file describes how the INIT process should set up
# the system in a certain run-level.
#
# Author: Miquel van Smoorenburg, <[email protected]>
# Modified for RHS Linux by Marc Ewing and Donnie Barnes
#
# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this) --关机
# 1 - Single user mode --单用户
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking) --无网络,无NFS
# 3 - Full multiuser mode --字符模式,完全多用户模式
# 4 - unused --保留
# 5 - X11 --图形
# 6 - reboot (Do NOT set initdefault to this) --重启
#
id:5:initdefault: <--确定runlevel
# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit <--初始化操作系统的基本东西:主机名,ip,检查磁盘,挂载文件系统
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
# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now <--ctl+alt+del实现重启
# When our UPS tells us power has failed, assume we have a few minutes
# of power left. Schedule a shutdown for 2 minutes from now.
# This does, of course, assume you have powerd installed and your
# UPS connected and working correctly.
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down" <--UPS
# If power was restored before the shutdown kicked in, cancel it.
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"
# Run gettys in standard runlevels
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
# Run xdm in runlevel 5
x:5:respawn:/etc/X11/prefdm -nodaemon <--图形界面
3. id:runlevel:action:process
--id: -->两个字符的特殊符号
--runlevel -->运行级别,,0,6不能设置成initdefault,生产环境常用3
--action -->动作
initdefault -->指出系统启动了,从哪个runlevel启动
sysinit -->system initialization
wait -->加入启动了一个wait的process,别的process在它结束前,无法运行
respawn -->程序在结束后,会被重新启动,登录的命令
ctraltdel -->接收ctr+alt+del快捷键
--process -->执行什么命令
4. 启动级别 3 5
4.1 /etc/rc.d/rc X
4.2 ll /etc/rc.d
drwxr-xr-x. 2 root root 4096 8月 26 17:55 init.d
-rwxr-xr-x. 1 root root 2617 9月 2 2010 rc
drwxr-xr-x. 2 root root 4096 8月 27 19:44 rc0.d
drwxr-xr-x. 2 root root 4096 8月 27 19:44 rc1.d
drwxr-xr-x. 2 root root 4096 8月 27 19:44 rc2.d
drwxr-xr-x. 2 root root 4096 8月 27 19:44 rc3.d
drwxr-xr-x. 2 root root 4096 8月 27 19:44 rc4.d
drwxr-xr-x. 2 root root 4096 8月 27 19:44 rc5.d
drwxr-xr-x. 2 root root 4096 8月 27 19:44 rc6.d
-rwxr-xr-x. 1 root root 220 9月 2 2010 rc.local
-rwxr-xr-x. 1 root root 19088 9月 2 2010 rc.sysinit
4.3 /etc/rc.d/init.d/ -->服务的脚本 /etc/init.d/和它内容相同
4.4 /etc/rc.d/rcX.d/ -->里面的文件是/etc/rc.d/init.d/内脚本的软链接
S -->start 开机自动启动
K -->Kill 开机不自动启动
数字 -->启动|关闭时的序号
4.5 自己定义脚本方式
/etc/rc.d/init.d/ -->脚本的真实文件
/etc/rc.d/rcX.d/ -->建立相应的软链接
5. 几个关键文件
/etc/issue -->本地登录终端的提示信息
[root@study1 init.d]# cat /etc/issue
Red Hat Enterprise Linux Server release 6.0 (Santiago)
Kernel \r on an \m
/etc/issue.net -->net下登录终端的提示信息
[root@study1 init.d]# cat /etc/issue.net
Red Hat Enterprise Linux Server release 6.0 (Santiago)
Kernel \r on an \m
/etc/motd -->登录成功后的提示信息,默认为空
6. RHEL6的boot
SysVInit(redhat9 rhel5) --> upstart(rhel6)
SysV-style:
System V init examines the /etc/inittab file for an :initdefault: entry, which tells init whether there is a default runlevel. If there is no default runlevel, then the user is dumped to a system console, where a runlevel must be entered manually.
Upstart is an event-based replacement for the traditional init daemon — the method by which several Unix-like computer operating systems perform tasks when the computer is started. It was written by Scott James Remnant, a former employee of Canonical Ltd.
启动速度比SysVInit要快,基于事件的启动模式
**************************part 2: 服务管理**************************
1.手动的打开|关闭服务,查看服务的状态
1.1 service命令
service httpd status --查看状态
service httpd start --打开
service httpd stop --关闭
service httpd restart --重启
service dhcpd configtest --测试dhcpd.conf文件写的对不对
service --status-all
1.2 /etc/init.d/command option --使用绝对路径服务名称启动
/etc/init.d/dhcpd start
1.3 /etc/rc.d/init.d/command option
/etc/rc.d/init.d/dhcpd start
1.4 每个服务里面的两行基本信息
[root@study1 ~]# cat /etc/rc.d/init.d/atd
#!/bin/sh
#
# atd Starts/stop the "at" daemon
#
# chkconfig: 345 95 5
chkconfig: 345 95 5 --三个数字:运行级别,启动序号,关闭序号
description: xxxxxx --描述信息
[root@study1 ~]# ll /etc/rc.d/rc3.d/
lrwxrwxrwx. 1 root root 13 8月 26 17:46 S95atd -> ../init.d/atd
[root@study1 ~]# ll /etc/rc.d/rc0.d/
lrwxrwxrwx. 1 root root 13 8月 26 17:46 K05atd -> ../init.d/atd
1.5 chkconfig
(1) chkconfig --list | grep servicename --查找服务的开机启动情况
[root@study1 ~]# chkconfig --list|grep vsftpd
vsftpd 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
(2) chkconfig servicename on|off
默认只改变2345四个级别服务的状态
(3) chkconfig --level 35 servicename on|off
指定具体的级别
[root@study1 ~]# chkconfig --level 235 vsftpd on
[root@study1 ~]# chkconfig --list|grep vsftpd
vsftpd 0:关闭 1:关闭 2:启用 3:启用 4:关闭 5:启用 6:关闭
(4) chkconfig --del atd
让chkconfig看不到atd这个服务
此时,仍能执行 chkconfig atd --level 4 on|off,执行chkconfig后,使用chkconfig --list查看atd重新出现
(5) chkconfig --add atd
让chkconfig看到atd这个服务
(6) chkconfig 会改动/etc/rc.d/rcX.d/里面脚本的软链接的名字:K->S, S->K, 变变数(启动序号 关闭序号)
2.图形化的配置方法
2.1 ntsysv 当前这个runlevel的状态
--空格选中|取消
--F1,简单帮助
安装包:ntsysv-1.3.47-1.el6.i686
2.2 ntsysv --level 35 改变指定级别的状态
2.3 runlevel --看当前的runlevel
[root@study1 ~]# runlevel
N 5
2.4 一台服务器,不用的服务关闭掉,开机快一点
*************************part 3: 磁盘配额*************************
功能:限制用户|组能够使用的block和inode数
1.应用场合
web服务器 针对web空间进行限制
邮件服务器 邮件的空间进行限制
文件服务器 能够使用的文件空间
www.unix-center.net 限制用户能够使用的文件系统的大小
2.磁盘配额的使用规范
2.1 只能对分区设置 *
2.2 内核必须支持磁盘配额(quota)
2.3 只能限制普通用户,对root是无效的
3.quota的限制
3.1 block --容量
3.2 inode --文件的数量
3.3 软限制 --可以违反(违反的时候会警告?),如果超过宽恕的天数,软-->硬,默认为7天
3.4 硬限制 --绝对不能够违反规则
4.制作磁盘配额的步骤
4.1分区
fdisk /dev/sda
partprobe
mkfs -t ext3 /dev/sdaxx
4.2挂载
(1)手动
mkdir /quota
mount -t ext3 -o usrquota,grpquota /dev/sda23 /quota *一定在挂载时指定grpquota,usrquota
(2)开机自动
vi /etc/fstab
/dev/sda23 /quota ext3 default,usrquota,grpquota, 1 2
(3)mount查看
/dev/sda23 on /quota type ext3 (rw,usrquota,grpquota)
4.3配置quota: quotacheck
quotacheck -caugv
-c create
-a all partation
-u user
-g group
-v verbose
检查文件系统,在/quota那个路径下生成了两个文件
4.4设置用户|组的配额
useradd newuser1
groupadd newgrp1
useradd newuser2 -g newgrp1
edquota -u newuser1 --配置用户的qouta
edquota -g newgrp1 --配置组的quota
edquota -t --定义graceful time
4.5启用|关闭quota
quotaon -vug /quota --启用用户,组配额
quotaon -vu /quota --启用用户配额
quotaoff -vug /quota --关闭用户,组配额
4.6测试quota
root-->chmod a+w /quota
su newuser1
dd if=/dev/zero bs=5M count=1 of=/quota/a
dd if=/dev/zero bs=5M count=1 of=/quota/b
dd if=/dev/zero bs=5M count=1 of=/quota/c
dd if=/dev/zero bs=5M count=1 0f=/quota/d -->超过了硬限制,因硬限制设置为20MB
4.7查看quota
repquota -uv /quota
repquota -avug /quota -->查看所有用户和组的配额情况(使用了多少,还剩多少)
**************************part 4:计划任务管理*****************
0.应用场合
0.1 每个月的固定的某一天某一时刻,做备份
0.2 定期搜索软件生成的文件,删除这些文件(每周一8:00)
1.at --定制一次的计划
1.1 确认包有没有安装
rpm -qa | grep at
yum -y install at
1.2 提交任务
at now +3min --从现在开始,3分钟以后做的事情
ctrl+d -->输入执行的命令后按此键结束
at 17:30 --如果时间在当前系统时间后,当天执行
at 12:30 --如果时间在当前系统时间前,后一天执行
at -t 2012-1-1 8:00 --指定2012-1-1 8:00做的事情
at now +3min -f myBash.sh -->-f指定执行的脚本
1.3 查看任务
(1)命令的查询方法
atq
at -l
(2)/var/spool/at
***这个路径下存放的是未执行的at任务的信息文件
***cat axxxx最后几行里有你提交任务的信息
***at -c jobid 相当于上一行的功能
1.4 删除任务
atq --确认job的id
atrm id --删除id对应的job
at -d id --同上,删除对应的job
1.5 开启|关闭atd
chkconfig --level 35 atd on
service atd start
1.6 at的权限设置
/etc/at.deny --这个文件中出现的用户名不允许使用at,参考/etc/at.allow
/etc/at.allow --允许这个文件中出现的用户使用at
2.crontab --定制周期的计划
2.0 特点:循环的;当前时间周期过了,就等下一个周期
2.1 确认包有没有安装
rpm -qf `which crontab` --查询安装包名称
yum -y install cronie
安装包:cronie-1.4.4-2.el6.i686
2.2 查看cronie包的内容
/etc/cron.d --系统默认计划的任务
/etc/cron.d/0hourly --系统每一个小时做的任务
/etc/cron.deny --拒绝用户不能使用crontab的文件
/etc/pam.d/crond --pam(可插拔认证模块)相关的文件
/etc/rc.d/init.d/crond --启动的脚本
/etc/sysconfig/crond --服务的配置文件
/usr/bin/crontab --管理crontab的命令
/usr/sbin/crond --后台的进程
/var/spool/cron/<username> --提交crontab任务的用户的文件
2.3 查看|修改crond的状态
service crond stauts --查看当前crond的运行状态
service crond restart --重启crond服务
chkconfig --level 35 crond on --设置运行级别3和5开机启动crond
2.4 提交作业
crontab -e --以当前用户的身份来计划任务
corntab -u <username> -e --以特定的用户来计划任务,只有root能这么做
crontab -l --查询当前用户的计划任务
crontab -u <username> -l --查看特定用户的计划任务,只有root能这么做
2.5 配置文件的格式
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * command to be executed
- --连接符 5-7
/ --每 */1
, --间隔 1,3,5
* * * * * --每分钟
*/1 * * * * --每分钟
00 22 1 1 * --每年1月1号的22:00
00 08,10,14 10 1 * --每年1月10号08:00,10:00,14:00
* * * * 1,3,5 --每周的1,3,5
00 08 11-14 * * --每月的11-14号8:00
********************************part 5:配置内核*************************
www.kernel.org -->3.0.3
1.内核编译
1.1内核裁剪
1.2打补丁
1.3添加新功能/新模块
2.确认内核版本
uname -a
uname -r --查看内核版本
cat /etc/redhat-release
[root@study1 ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.0 (Santiago)
3.内核的组成
/boot/vmlinuz-xxxxxx --内核的核心
/lib/modules/<version> --内核的模块文件
/boot/initramfs-xxxxx.img --虚拟的根文件系统,放在内存中,gzip压缩的
/boot/config-xxx --内核的配置文件
看看initramfs*.img的内容
gunzip < /boot/initramfs*.img > /tmp/file.img
mkdir /tmp/img_dir
cd /tmp/img_dir
cpio -i --make-directories < /tmp/file.img
4.编译内核
4.1 www.kernel.org -->2.6.39.4
4.2 解压缩
cd /usr/local/src
cp kernle.tar.bz2 ./
tar xjvf kernel.tar.bz2
4.3 配置(4种方法)
cp /boot/config-2.6.32* /usr/local/src/linux-2.6.39/.config --用系统已有的配置文件生成一个配置文件
make config --问答模式的配置
make menuconfig --字符图形界面,ncurses
yum -y install ncurses-devel
make xconfig --图像界面的,QT
yum -y install qt-devel
M 以模块的方式编译进内核
* 直接编译到内核
空白 不是用
4.4 编译
make
4.5 安装模块
make modules_install -->把模块的东西拷贝到/lib/modules/version/
4.6 安装内核
make install -->vmlinuz-version -->/boot
[root@study1 linux-3.0.3]# make install
sh /usr/src/linux-3.0.3/arch/x86/boot/install.sh 3.0.3 arch/x86/boot/bzImage \
System.map "/boot"
ERROR: modinfo: could not find module iwlcore
ERROR: modinfo: could not find module snd_hda_codec_nvhdmi
ERROR: modinfo: could not find module snd_hda_codec_intelhdmi
ERROR: modinfo: could not find module i2c_core
4.7 确认安装是否成功
#ls /boot -->vmlinuz-version, initramfs-version*.img
#ls /lib/modules/<version> -->2.6.39
#cat /boot/grub/grub.conf
root (hd0,0)
kernel /vmlinuz-2.6.39.4 ro root=/dev/mapper/GLSvg-GLSroot rd_LVM_LV=GLSvg/GLSroot rd_LVM_LV=GLSvg/GLSswap rd_NO_LUKS rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us crashkernel=auto rhgb quiet
initrd /initramfs-2.6.39.4.img
<--确认存在这三段内容