2015.12.30/Mon *************摘要************** 计划任务 1)一次性计划任务 服务:atd 命令:at 服务存放文件:/etc/init.d/atd 系统配置文件:/etc/at.deny 程序缓存文件:/var/spool/at 2)周期性计划任务 服务:cron/crond 命令:crontab 服务存放文件:/etc/init.d/crond 系统配置文件:/etc/cron.deny /etc/crontab 程序缓存文件:/var/spool/cron/* /var/log/cron 启动流程 *针对rhel6 1)通电——>BIOS——>boot loader(MBR)——>Kernel & initrd——>init 2)BIOS 1>加载CMOS,取得主机的硬件配置 2>自检 3>加载可开机装置,读取MBR 2)boot loader 1>存放于MBR(512bytes),占用446bytes 2>rhel6为grub: a.配置文件 /boot/grub/menu.lst b.grub界面的具体操作P722 c.忘记root密码如何操作 3>加载Kernel和initrd 2)kernel&Initial 1> 核心文件存放:/boot/vmlinuz-2.6.32-431.el6.x86_64 2> 虚拟文件系统:/boot/initrd-2.6.32-431.el6.x86_64kdump.img<==核心解压所需的RAM Disk 3> 加载核心模块:/lib/modules/2.6.32-431.el6.x86_64/kernel 4> 记录核心版本: /proc/version 5> 记录核心功能: /proc/sys/kernel 3)init 1> 命令存放文件:/sbin/init 2> 开机执行脚本:/etc/init/rcS.conf /etc/rc.d/sysinit 系统初始化 3> 系统配置文件:/etc/inittab 取得runlevl等级 4> 设置开机服务:/etc/rc.d/rcx.d (根据runlevel确定x,开启相关服务) 5> 预设开机服务:/etc/init.d/* 6> 预设开机配置:/etc/init/*.conf 3> 相关命令:chkconfig ******************************************************************************************************* 计划任务知识点详细解读 ============================================== atd服务的运作方式及管理 ============================================== 当执行at程序并在终端输入命令后, 首先系统会到配置文件中寻找at相关的文档 /etc/at.allow <==记录了允许使用at命令的用户名 /etc/at.deny <==记录了不允许使用at命令的用户名 若以上两个文件都没有,则系统默认只有root可以使用at 输入的内容将被保存到以下目录中/var/spool/at/* #服务的启动命令: /etc/init.d/atd restart <==重启 rhel6 service atd start 启动 service atd restart重启 service atd status 查看 rhel7 systermctl start atd systermctl restart atd systermctl status atd ================================================ at命令的用法 ================================================ at [-mldv] TIME at -c 工作号码 选项与参数: -m :当 at 工作完成后,即使没有输出讯息,亦以 email 通知使用者该工作 已完成。 -l :at -l =atq,列出目前系统上面的所有该用户的at 排程; -d :at -d =atrm ,可以取消一个在 at 排程中的工作; -v :可以使用较明显的时间格式显出 at 排程中的任务列表; -c :可以列出后面接的该项工作的实际指令内容。 =========================================================== cron/crond 的运作方式及管理 ============================================================ 首先系统会到配置文件中寻找cron相关的文档 /etc/cron.allow <==记录了允许使用crontab命令的用户名 /etc/cron.deny <==记录了不允许使用crontab命令的用户名 若以上两个文件都没有,则系统默认只有root可以使用crontab /etc/crontab <==系统的例行性任务 使用 crontab 来建立工作排程后,该项工作就会被记录在/var/spool/cron/* <==以执行者的用户名来命名 执行的工作会被记录在日志中/var/log/cron ========================================== /etc/crontab文件内容详解 ========================================== [root@rhel6 ~]# cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # For details see man 4 crontabs # Example of job definition: # .---------------- 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 # | | | | | # * * * * * user-name command to be executed 例如:系统每五分钟执行一次该目录下所有可执行文件 /5 * * * * root run-parts /root/runcron ========================================== crontab命令的用法 ========================================== crontab [-u username] [-l|-e|-r] 选项与参数: -u :只有 root 使用,亦即帮其他使用者建立/移除 crontab 工作 排程; -e :编辑 crontab 工作内容 -l :查阅 crontab 工作内容 -r :移除所有 crontab 的工作内容,若仅要移除一项,请用 -e 去编辑 ~~~~~~~~~~~~~~~~ crontab -e 编辑的格式说明: ~~~~~~~~~~~~~~~~ 代表意义 分钟 小时 日期 月份 周 命令 数字范围 0-59 0-23 1-31 1-12 0-7 命令 特殊字 代表意义 *(星号) 代表任何时刻 ,(逗号) 代表分隔时段 -(减号) 代表一段时间范围 /n(斜线) n 代表数字,『每隔 n 单位间隔』,例如每五分钟进行一次 例题====student在每天 12:00 发信给自己 crontab -e # vi 编辑画面 每项工作都是一行。 0 12 * * * mail student -s "at 12:00" < /home/student/.bashrc 分 时 日 月 周|<==============命令===========================| =========================================== -------------------------------------------------------------------------------------------------------------------- 系统启动流程知识点详细解读 操作系统为 rhel6 ******************************************************************** **********启动流程********** 1.加电,自检 检查系统硬件的健康程度 2.bios(Basic Input Output System)-->启动次序:设定外部存储设备哪个作为我们默认的存储设备 主要启动记录区(Master Boot Record, MBR):主引导记录 512字节 bootloader:位于MBR,446字节,启动项,程序 rhel6 grub/rhel7 grub2 grub被分成了两段 stage1 用来引导stage2 stage2 真正的引导 stage1.5 驱动 grub的配置文件 /boot/grub/grub.conf root(hd0,0)指定了以硬盘上哪个分区作为根 /boot 由于文件系统的概念在这里还没有生成,所以要直接指定硬盘的某一个位置, hd 代表的是所有类型的硬盘 hd0 代表第一块硬盘 0 代表第一个分区 quiet 指定内存的位置,传递给内核的参数 initrd 虚拟文件系统,提供一些简单的命令和驱动 initrd 原理将内存的一段空间模拟成磁盘去用 硬件启动到此结束 ========================================== =========================================================== /boot/* =========================================================== 核心与核心模块放在哪 核心: /boot/vmlinuz /boot/vmlinuz-version 核心解压所压缩所需 RAM Disk: /boot/initrd (/boot/initrd-version) 核心模块: /lib/modules/version/kernel /lib/modules/$(uname -r)/kernel 核心原始码: /usr/src/linux (要安装才会有!否则预设不安装) 核心被顺利的加载有几个信息记录下来: 核心版本: /proc/version 系统核心功能: /proc/sys/kernel 核心模块的额外参数设定: /etc/modprobe.conf ================================================================================ /boot ================================================================================== config-2.6.32-431.el6.x86_64 <==此版本核心被编译时选择的功能与模块配置文件 lost+found efi grub <==开机管理程序grub相关数据目录 symvers-2.6.32-431.el6.x86_64.gz System.map-2.6.32-431.el6.x86_64<==核心功能放置到内存地址的对应表 initramfs-2.6.32-431.el6.x86_64.img initrd-2.6.32-431.el6.x86_64kdump.img<==虚拟文件系统文件 vmlinuz-2.6.32-431.el6.x86_64<==核心文件 ================= /boot/grub/* ================= rw-r--r-- device.map <==grub 的装置对应文件 -rw-r--r-- e2fs_stage1_5 <==文件系统定义档 -rw-r--r-- fat_stage1_5 <==FAT 文件系统定义档 -rw-r--r-- ffs_stage1_5 <==FFS 文件系统定义档 -rw------- grub.conf <==grub 在 Red Hat 的配置文件 -rw-r--r-- iso9660_stage1_5<==光驱文件系统定义文件 -rw-r--r-- jfs_stage1_5<==jfs 文件系统定义档 lrwxrwxrwx menu.lst -> ./grub.conf <==配置文件 -rw-r--r-- minix_stage1_5 <==minix 文件系统定义档 -rw-r--r-- reiserfs_stage1_5 <==reiserfs 文件系统定义档 -rw-r--r-- splash.xpm.gz <==开机时在 grub 底下的背景图示 -rw-r--r-- stage1 <==stage 1 的相关说明 -rw-r--r-- stage2 <==stage 2 的相关说明 -rw-r--r-- ufs2_stage1_5 <==UFS 的文件系统定义档 -rw-r--r-- vstafs_stage1_5 <==vstafs 文件系统定义档 -rw-r--r-- xfs_stage1_5<==xfs 文件系统定义档 ==================== /boot/grub/menu.list ====================p722 default=0<==默认开机选项,使用第 1 个开机选单 (title) timeout=5<==若 5 秒内未动键盘,使用默认选单开机 splashimage=(hd0,0)/grub/splash.xpm.gz<==背景图示所在的档案 hiddenmenu<==读秒期间是否显示出完整的选单画面(预设隐藏) title Red Hat Enterprise Linux (2.6.32-431.el6.x86_64)<==第一个选单的内容 root (hd0,0)<==代表核心档案放在那个 partition 当中 kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/mapper/vg_rhel6-LogVol01 rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us rd_LVM_LV=vg_rhel6/LogVol01 rd_NO_DM rhgb quiet initrd /initramfs-2.6.32-431.el6.x86_64.img ================================================== /lib/modules/2.6.32-431.el6.x86_64/kernel ================================================== 核心调用的核心模块,即驱动 arch 与硬件平台有关 如cpu等 drivers 一些硬件的驱动程序 显示适配器、网络卡、PCI 相关硬件等 kernel mm sound 音效有关的各项模块 crypto 核心所支持的加密的技术 fs 核心所支持的 filesystems lib 一些函数库 net 网络有关的各项协议数据,还有防火墙模块 rch ------------------------------ lib/modules/$(uname -r)/modules.dep 记录核心支持模块的各项相依性 epmod [-Ane] 选项不参数: -A :不加任何参数时, depmod 会主动的去分析目前核心的模块,重新写入/lib/modules/$(uname -r)/modules.dep 当中。若加入 -A 参数时,则depmod会去搜寻比 modules.dep 内还要新的模块,更新。 -n :不写入 modules.dep ,而是将结果输出到屏幕上(standard out); -e :显示出目前已加载的丌可执行的模块名称 范例一:若我做好一个网卡驱劢程序,档名为 a.ko,该如何更新核心相依性? [root@www ~]# cp a.ko /lib/modules/$(uname -r)/kernel/drivers/net [root@www ~]# depmod 正对核心模块的命令: lsmod modinfo insmod rmmod modprobe [-lcfr] module_name 选项不参数: -c :列出目前系统所有的模块!(更详细的代号对应表) -l :列出目前在 /lib/modules/`uname -r`/kernel 当中的所有模块完整文件名; -f :强制加载该模块; -r :类似 rmmod 移除 /etc/modprobe.d/* 核心模块的额外参数设定 ***********************************************************************************************88 rhel6 1.第一个读取的文件 /etc/init/rcS.conf 2.运行级别 /etc/inittab Default runlevel. The runlevels used 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) # 3 - Full multiuser mode # 4 - unused # 5 - X11 图形化界面 # 6 - reboot (Do NOT set initdefault to this) /etc/rc.d/rcx.d chkconfig --list chkconfig xxxx on 让服务在2345级别开机运行方式 chkconfig xxxx off 让服务在2345级别不要开机启动的方式 chkconfig --level 3 netconsole on 指定某一个服务,在某个运行级别下开机启动 若忘记root密码? rhel6 在kenel行输入s 进入但用户模式修改root密码 rhel7 stage1依旧存放在MBR中 备份文件是/boot/grub2/i386-pc/boot.img stage2 /boot/grub2/i386-pc/core.img grup配置文件常用的一些参数/etc/default/grub文件中 grub主配置文件/boot/grub2/grub.cfg 可以通过/etc/default/grub里的配置参数自动生成一个新的grub配置文件 命令是:grub2-mkconfig -o /boot/grub2/grub.cfg 硬件启动的不同 软件启动:1.第一个进程systemd 2.运行级别不再用数字定义,而是以xxxx.wants来表示,每个运行级别的存放位置都是/etc/systemd/system/....target.wants目录下 3.systemctl enable xxxx服务名称 开机启动 4.在对应启动级别目录下,会有一些软链接文件,该文件代表在该运行级别下,需要开机自起的服务。 centos7/rhel7进入单用户方式和重置密码方式发生了较大变化,GRUB由b引导变成了ctrl+x引导。 重置密码主要有rd.break和init两种方法。 rd.break方法: 1、启动的时候,在启动界面,相应启动项,内核名称上按“e”; 2、进入后,找到linux16开头的地方,按“end”键到最后,输入rd.break,按ctrl+x进入; 3、进去后输入命令mount,发现根为/sysroot/,并且不能写,只有ro=readonly权限; 4、mount -o remount,rw /sysroot/,重新挂载,之后mount,发现有了r,w权限; 5、chroot /sysroot/ 改变根; (1)echo redhat|passwd –stdin root 修改root密码为redhat,或者输入passwd,交互修改; (2)还有就是先cp一份,然后修改/etc/shadow文件 6、touch /.autorelabel 这句是为了selinux生效 7、ctrl+d 退出 8、然后reboot 至此,密码修改完成 init方法: 1. 启动系统,并在GRUB2启动屏显时,按下e键进入编辑模式。 2. 在linux16/linux/linuxefi所在参数行尾添加以下内容:init=/bin/sh 3. 按Ctrl+x启动到shell。 4. 挂载文件系统为可写模式:mount –o remount,rw / 5. 运行passwd,并按提示修改root密码。 6. 如何之前系统启用了selinux,必须运行以下命令,否则将无法正常启动系统:touch /.autorelabel 7. 运行命令exec /sbin/init来正常启动,或者用命令exec /sbin/reboot重启 ============================================================================= /etc/init/rcS.conf /etc/rc.d/rc.sysinit ============================================================================= 准备系统软件执行的环境的脚本执行档,进行系统初始化 =============================================================================================== /etc/inittab =============================================================================================== 规划默认的runlevel(开机执行等级) # inittab is only used by upstart for the default runlevel. # # ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM. # # System initialization is started by /etc/init/rcS.conf # # Individual runlevels are started by /etc/init/rc.conf # # Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf # # Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf, # with configuration in /etc/sysconfig/init. # # For information on how to write upstart event handlers, or how # upstart works, see init(5), init(8), and initctl(8). # # Default runlevel. The runlevels used 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) # 3 - Full multiuser mode # 4 - unused # 5 - X11 # 6 - reboot (Do NOT set initdefault to this) # id:5:initdefault: ============================================================================= /etc/rc.d/rcx.d ============================================================================= 根据runlevel确定x,开启和关闭相关服务,每个运行级别都对应一个目录 K开头代表启动过程中需要关闭的服务 S开头代表启动过程中需要开启的服务 在每个运行级别里,需要开启的服务和需要关闭的服务都是不一样的 /etc/rc.d/rc3.d/* K01smartd K74ntpd S10network S26acpid K02oddjobd K75ntpdate S11auditd S26haldaemon K05wdaemon K75quota_nld S11portreserve S26udev-post K10psacct K76ypbind S12rsyslog S28autofs K10saslauthd K80kdump S13cpuspeed S50bluetooth K15htcacheclean K84wpa_supplicant S13irqbalance S55sshd K15httpd K87restorecond S13rpcbind S80postfix K30spice-vdagentd K88sssd S15mdmonitor S82abrt-ccpp K50dnsmasq K89rdisc S22messagebus S82abrtd K50netconsole K95firstboot S23NetworkManager S90crond K50snmpd K99rngd S24nfslock S95atd K50snmptrapd S01sysstat S24rpcgssd S97rhnsd K60nfs S02lvm2-monitor S25blk-availability S97rhsmcertd K69rpcsvcgssd S08ip6tables S25cups S99certmonger K73winbind S08iptables S25netfs S99local ============================================================================= /etc/rc.d/rc.local ============================================================================= 用户自定义开机启动程序 把自己制作的 shell script 完整档名写入 /etc/rc.d/rc.local ============================================================================= /etc/init.d/* ============================================================================= 规划软件执行的环境,包括系统的主机名、网络设定、语系的处理、文件系统格式及其他服务 abrt-ccpp firstboot messagebus rdisc snmpd abrtd functions netconsole restorecond snmptrapd abrt-oops haldaemon netfs rhnsd spice-vdagentd acpid halt network rhsmcertd sshd atd htcacheclean NetworkManager rngd sssd auditd httpd nfs rpcbind sysstat autofs ip6tables nfslock rpcgssd udev-post blk-availability iptables ntpd rpcidmapd wdaemon bluetooth irqbalance ntpdate rpcsvcgssd winbind certmonger kdump oddjobd rsyslog wpa_supplicant cpuspeed killall portreserve sandbox ypbind crond lvm2-lvmetad postfix saslauthd cups lvm2-monitor psacct single dnsmasq mdmonitor quota_nld smartd ============================================== /etc/init/* ============================================== 预设开机配置 control-alt-delete.conf rcS-sulogin.conf init-system-dbus.conf readahead-collector.conf kexec-disable.conf readahead.conf plymouth-shutdown.conf readahead-disable-services.conf prefdm.conf serial.conf quit-plymouth.conf splash-manager.conf rc.conf start-ttys.conf rcS.conf tty.conf rcS-emergency.conf ================================================== /etc/sysconfig/* ================================================== 系统服务的相关配置文件 系统是rhel7 =========================================================== /boot/* =========================================================== config-3.10.0-229.el7.x86_64 <==此版本核心被编译时选择的功能与模块配置文件 extlinux grub2 <==开机管理程序grub2相关数据目录 initramfs-0-rescue-aeba48e026da48748623100ffa1ab649.img initramfs-3.10.0-229.el7.x86_64.img initrd-plymouth.img <==虚拟文件系统文件 symvers-3.10.0-229.el7.x86_64.gz System.map-3.10.0-229.el7.x86_64 <==核心功能放置到内存地址的对应表 vmlinuz-0-rescue-aeba48e026da48748623100ffa1ab649 vmlinuz-3.10.0-229.el7.x86_64 <==核心文件 =============================================================================================== /etc/inittab /etc/init.d/* =============================================================================================== /etc/inittab ============== # inittab is no longer used when using systemd. <==rhel7已经不再使用这个文件来进行配置了 # ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.<==在这个文档中添加配置已经没有用了 # Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target<==ctrlaltdel现在是通过/usr/lib/systemd/system/ctrl-alt-del文件来配置 # systemd uses 'targets' instead of runlevels. By default, there are two main targets:<==系统使用标签来代替runlevel开机等级,默认情况下,有两种标签 # multi-user.target: analogous to runlevel 3<==multi-user.target代表runlevel3,文本模式 # graphical.target: analogous to runlevel 5<==graphical.targe代表runlevel5,图形模式 # To view current default target, run:<==想知道目前系统的默认标签,可以运行 systemctl get-default # systemctl get-default # To set a default target, run:<==想设置默认标签,可以运行systemctl set-default TARGET.target # systemctl set-default TARGET.target =============== /etc/init.d/* =============== rhel7系统的服务执行档都已经迁移至/etc/rc.d/init.d/* 服务的指令为systemctl ============================================================================= /etc/rc.d/* ============================================================================ init.d rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d rc.local ---------------------------------------------------------------------------- rhel7当中已经将系统服务的相关内容放在/usr/lib/systemd/system/目录下 服务的指令为systemctl ============================================================================= /usr/lib/systemd/system/* ============================================================================ rhel7系统规划软件执行的环境,包括系统的主机名、网络设定、语系的处理、文件系统格式及其他服务 ctrl-alt-del.target rpcbind.target dbus-org.freedesktop.hostname1.service rpc-gssd.service dbus-org.freedesktop.locale1.service rpc-statd-notify.service dbus-org.freedesktop.login1.service rpc-statd.service dbus-org.freedesktop.machine1.service rpc-svcgssd.service dbus-org.freedesktop.timedate1.service rsyncd.service dbus.service rsyncd.socket dbus.socket rsyslog.service dbus.target.wants rtkit-daemon.service debug-shell.service runlevel0.target default.target runlevel1.target default.target.wants runlevel1.target.wants dev-hugepages.mount runlevel2.target dev-mqueue.mount runlevel2.target.wants dm-event.service runlevel3.target dm-event.socket runlevel3.target.wants dmraid-activation.service runlevel4.target dnsmasq.service runlevel4.target.wants dracut-cmdline.service runlevel5.target dracut-initqueue.service runlevel5.target.wants dracut-mount.service runlevel6.target dracut-pre-mount.service saslauthd.service dracut-pre-pivot.service [email protected] dracut-pre-trigger.service shutdown.target dracut-pre-udev.service shutdown.target.wants dracut-shutdown.service sigpwr.target ebtables.service sleep.target ============================================================================= /etc/sys* ============================================================================ /etc/sysctl.conf 系统的预设配置已经换到以下目录 /usr/lib/sysctl.d/00-system.conf ------------------------------------------------- /etc/system-release 系统版本信息 Red Hat Enterprise Linux Server release 7.1 (Maipo) --------------------------------------------------- /etc/system-release-cpe cpe:/o:redhat:enterprise_linux:7.1:ga:server --------------------------------------------------- /etc/sysconfig:系统服务的相关配置文件 atd init network rsyslog 是否启用网络,设置主机名和网关 authconfig ip6tables-config network-scripts run-parts 身份证的机制 设置网卡 autofs iptables-config nfs samba cbq irqbalance ntpdate saslauthd cgred kdump pluto selinux console kernel radvd smartmontools cpupower ksm raid-check sshd crond libvirtd rdisc sysstat ebtables-config libvirt-guests readonly-root sysstat.ioconf fcoe man-db rhn virtlockd firewalld modules rpcbind virt-who grub netconsole rsyncd wpa_supplicant ---------------------------------------------- /etc/sysctl.d: 99-sysctl.conf ----------------------------------------------- /etc/systemd: bootchart.conf logind.conf system.conf user.conf journald.conf system user