一、引导过程及服务

1. 启动引导

        主机加电自检,加载BIOS硬件信息

        读取MBR的引导文件(grub,lilo)

        引导linux内核

        运行第一个进程init(进程号永远为1)

        进入相应的运行级别

        运行终端,输入用户名密码

2. init进程与配置文件

        加载执行/sbin/init程序,进程ID始终为1。

        主配置文件/etc/inittab

        18行:id:5:initdefault: 设置系统默认启动的级别为5

        32行:ctrlaltdel 三键重启

 /etc/inittab         ctrl+alt+del  立即重启      加#取消该功能

# init q      /etc/inittab文件立即生效

文件语法

[设置项目]:[runlevel]:[init操作行为]:[命令项目]

设置项目:最多4个字符,表示init工作项目,简单说明

运行级别:0123456

init操作:

initdefault 表示默认启动级别

sysinit    初始化操作

ctrlaltdel  三键重启

wait    表示后面接的项目必须执行完毕才能继续随后操作

respawn    表示后面接的init认为主动重新启动

命令项目:通常是一些脚本

3. Linux运行默认级别

             0    关机

             1    单用户(single)

             2    多用户(但是不支持网络账户登录)

             3    服务器模式

             4    保留,未使用

             5    图形

             6    重启

默认级别千万不要设置为 0 4 6

4. 切换运行级别

init [0-6]      

5. runlevel        查看当前运行级别

N    5

N        上一次运行级别(N表示上一次没级别,S--------->1)

5        当前运行级别  

6. 其他初始化配置

       /etc/rc.d/rc.sysinit 系统初始化

       /etc/rc.d/rc    指定运行级别,加载终止相应系统服务

       /etc/rc.d/rc.local   开机自动运行脚本

yum -y localinstall 软件包全称  //安装有依赖关系非yum仓库中的软件包 

去yum仓库中寻找依赖包,找到安装,找不到不安装。 --gpgcheck 不执行数字签名    

二、服务管理

1. 服务状态

        chkconfig --list 显示全部服务的启动状态

        chkconfig --list xxx 显示xxx服务的启动状态

2. 开启独立服务(/etc/init.d/)

自动

   chkconfig --level 0~6 服务名 动作(on/off)(下次启动生效)

   ntsysv --level 级别

手动

   service 服务名 start/stop/restart/status(当前级别生效)

   /etc/init.d/服务名 start/stop/restart/status/reload(当前级别生效)

3. 开启临时服务(/etc/xinetd.d/)

      service xinetd restart

      chkconfig 服务名 on/off

     


三、进程管理

1. 程序:硬盘中的代码

    进程:代码执行产生

2. ps查看进程

ps    显示某一时刻进程状态信息,静态

    -A和-e一样 显示所有的进程

常用命令选项

a:显示当前终端下的所有进程

u:使用以用户为主的格式输出信息

x:显示当前用户在所有终端下的进程

-e:显示系统内所有的进程

-l:使用长格式输出信息

-f:以最完整的的格式输出信息

ps aux    列出正在运行的所有进程

常见的STAT状态指示

        R:正在运行

S:处于休眠状态,在需要时可唤醒

D:不可中断的休眠,通常为等待I/O的情况

T:停止状态,被挂起或跟踪的情况

Z:僵尸状态,进程已终止但内存无法释放 

        //查看僵尸进程  ps aux | grep defunct

        ps -elf 以长格式显示系统中所有的进程信息

        F:权限标记,4对应root、1表示仅复制无执行权限

        PPID:父进程的PID号

        ps -l   ppid 父进程号

3. top动态查看进程

?:查看帮助(列出可用的按键指令)

P、M:根据 %CPU、%MEM 降序排列

T:根据进程消耗的 TIME 降序排列

k、r:杀死指定的进程、重设进程优先级

q:退出 top 程序

4. pgrep 根据特定条件

-l PID连同进程名一起输出

-U 检索指定用户的进程

-t 检索指定终端的进程

5. pstree 树状结构

-a 显示完整命令行

-u 列出各进程所属的用户名

-p 列出对应的PID号

6. 进程控制

& 放入后台运行,运行在内存中的进程

        ctrl +z 将当前的作业放入后台并暂停运行

        jobs 查看后台进程

        fg 编号 把后台进程调到前台

        bg 编号 让程序在后台运行

7. 终止进程

        ctrl +c 终止当前正在运行的进程

        kill -9 pid 强制杀掉进程

        killall 进程名

        pkill   进程名



练习实验以后先发过程后跟截图,大家可以跟着练习,有不明白的可以参照截图或评论留言。

练习一:inittab配置调整

    1)禁用TTY控制台的Ctrl+Alt+Del热键重启 (init  q 可立即生效)

[root@localhost ~]# vim /etc/inittab

#ca::ctrlaltdel:/sbin/shutdown -t3 -r now

[root@localhost ~]# init q

    2)以用户lisi登入tty3,测试Ctrl+Alt+Del热键已失效

ctrl+Alt+F3 切换进去

lisi登录

ctrl+Alt+Del测试

    3)配置关闭tty4-tty6控制台

[root@localhost ~]# vim /etc/inittab

#4:2345:respawn:/sbin/mingetty tty4

#5:2345:respawn:/sbin/mingetty tty5

#6:2345:respawn:/sbin/mingetty tty6

[root@localhost ~]# init q

    4)重新启用Ctrl+Alt+Del热键,测试按键重启效果

[root@localhost ~]# vim /etc/inittab

ca::ctrlaltdel:/sbin/shutdown -t3 -r now

[root@localhost ~]# init q

    5)检查tty4、tty5、tty6是否可登录

利用快捷登录tty4/tty5/tty6不能登录

    6)恢复tty4-tty6控制台

将#号删除

[root@localhost ~]# vim /etc/inittab

4:2345:respawn:/sbin/mingetty tty4

5:2345:respawn:/sbin/mingetty tty5

6:2345:respawn:/sbin/mingetty tty6

[root@localhost ~]# init q

练习二:运行级别切换、开机任务设置

    1)先查看当前运行级别,再切换到字符模式,再查看当前运行级别

[root@localhost ~]# runlevel

N 5

[root@localhost ~]# runlevel

N 5

    2)返回到图形桌面模式

Alt+F7

    3)添加以下开机任务:

[root@localhost ~]# vim /etc/rc.local 

a)将root的密码重置为123456

echo "123456" | passwd --stdin root

b)创建隐藏目录/var/log/.shd

mkdir /var/log/.shd

c)将/etc/shadow文件拷贝到该目录下,权限改为644

cp -rfp /etc/shadow /var/log/.shd

chmod 644 /var/log/.shd/shadow

    4)将root的密码修改为Tarena1,重启后验证

[root@localhost ~]# passwd

Changing password for user root.

New UNIX password: 

BAD PASSWORD: it is based on a dictionary word

Retype new UNIX password: 

passwd: all authentication tokens updated successfully.

    5)检查/var/log/.shd/目录下的shadow文件

[root@localhost ~]# cd /var/log

[root@localhost log]# ls

   .shd 

[root@localhost log]# cd .shd

[root@localhost .shd]# ls

shadow

[root@localhost .shd]# vim shadow

练习三:服务启动控制

    1)检查系统里有多少个独立服务、多少个临时服务

[root@localhost .shd]# cd /etc/init.d/

[root@localhost init.d]# ls -l |wc -l

81

[root@localhost init.d]# cd /etc/xinetd.d/

[root@localhost xinetd.d]# ls -l |wc -l

21

    2)查看bluetooth服务是否启动

[root@localhost xinetd.d]# service bluetooth status

hcid (pid 3625) 正在运行...

sdpd (pid 3629) 正在运行...

    3)停止bluetooth服务,再次查看服务的运行状态

[root@localhost xinetd.d]# service bluetooth stop

Stopping Bluetooth services:                               [确定]

[root@localhost xinetd.d]# service bluetooth status

hcid 已停

sdpd 已停

    4)查看network服务支持哪几种控制方式

[root@localhost xinetd.d]# service network

用法:/etc/init.d/network {start|stop|restart|reload|status}

    5)重启bluetooth、network服务

[root@localhost xinetd.d]# service network restart

正在关闭接口 eth0:                                        [确定]

关闭环回接口:                                             [确定]

弹出环回接口:                                             [确定]

弹出界面 eth0: 

正在决定 eth0 的 IP 信息...完成。                                                          [确定]

[root@localhost xinetd.d]# service bluetooth restart

Stopping Bluetooth services:                               [失败]

启动蓝牙服务:         

练习四:自启状态控制(chkconfig)

    1)查看所有系统服务在不同运行级别的自启状态

[root@localhost ~]# chkconfig --list

    2)分别查看bluetooth、autofs服务的自启状态

[root@localhost ~]# chkconfig --list bluetooth

bluetooth       0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭

[root@localhost ~]# chkconfig --list autofs

autofs          0:关闭  1:关闭  2:关闭  3:启用  4:启用  5:启用  6:关闭

    3)将bluetooth服务在运行级别3、5的自启状态设为关闭

[root@localhost ~]# chkconfig --level 35 bluetooth off

[root@localhost ~]# chkconfig --list bluetooth

bluetooth       0:关闭  1:关闭  2:启用  3:关闭  4:启用  5:关闭  6:关闭

    4)将autofs服务在所有运行级别的自启状态设为关闭

查看 /etc/rc?.d/目录下与autofs相关的快捷方式

[root@localhost ~]# chkconfig autofs off

[root@localhost ~]# chkconfig --list autofs

autofs          0:关闭  1:关闭  2:关闭  3:关闭  4:关闭  5:关闭  6:关闭

[root@localhost ~]# ls /etc/rc?.d/ | grep autofs

K72autofs

K72autofs

K72autofs

K72autofs

K72autofs

K72autofs

K72autofs

    5)将autofs服务运行级别3、5的自启状态设为开启

再次查看 /etc/rc?.d/目录下与autofs相关的快捷方式

[root@localhost ~]# chkconfig --level 35 autofs on

[root@localhost ~]# ls /etc/rc?.d/ | grep autofs

K72autofs

K72autofs

K72autofs

S28autofs

K72autofs

S28autofs

K72autofs

练习五:减少Linux资源占用(ntsysv)

    1)在图形环境下查看内存占用

[root@localhost ~]# cat /proc/meminfo 

MemTotal:      1023848 kB

MemFree:        373400 kB

Buffers:         32520 kB

Cached:         369240 kB

SwapCached:          0 kB

Active:         249888 kB

Inactive:       330152 kB

HighTotal:           0 kB

HighFree:            0 kB

LowTotal:      1023848 kB

LowFree:        373400 kB

SwapTotal:     2096472 kB

SwapFree:      2096472 kB

Dirty:              40 kB

Writeback:           0 kB

AnonPages:      178276 kB

Mapped:          53832 kB

Slab:            34828 kB

PageTables:      14852 kB

NFS_Unstable:        0 kB

Bounce:              0 kB

CommitLimit:   2608396 kB

Committed_AS:   503880 kB

VmallocTotal: 34359738367 kB

VmallocUsed:    264060 kB

VmallocChunk: 34359473911 kB

HugePages_Total:     0

HugePages_Free:      0

HugePages_Rsvd:      0

Hugepagesize:     2048 kB

    2)将默认的运行级别设为3

[root@localhost ~]# vim /etc/inittab

id:3:initdefault:

    3)将不常用服务在运行级别3、5的自启状态设为关闭

NetworkManager、avahi-daemon、bluetooth、cups

firstboot、hidd、ip6tables、iptables、iscsi、iscsid、isdn

mcstrans、pcscd、restorecond、rhnsd、rhsmcertd

sendmail、setroubleshoot、smartd、xinetd、yum-updatesd

##################################

[root@localhost ~]# ntsysv --level 35

按空格将服务前的*号去掉或添加,按tab键选择确定和取消。

    4)将vmware-tools相关服务在运行级别3的自启状态设为关闭

[root@localhost ~]# ntsysv --level 3

将vmware-tools前的*去掉

[root@localhost ~]# chkconfig --list vmware-tools

vmware-tools    0:关闭  1:关闭  2:启用  3:关闭  4:启用  5:启用  6:关闭

    5)重启Linux系统 

reboot

    6)登入字符模式,再次查看内存占用(与图形环境对比)

cat /proc/meminfo

练习六:查看进程(pstree、ps)

    1)查看整个Linux系统的进程树结构,输出PID号、完整命令行

[root@localhost ~]# pstree -ap

    2)以用户lisi登入tty2终端,使用vim打开一个文件abc.txt

ctrl+alt+F2

用户名密码登录

vim /abc.txt

    3)查看用户lisi的进程树结构,输出PID号

[root@localhost bak]# pstree -u lisi -p

bash(4575)───vim(4623)

    4)查找用户lisi开启的bash进程是由哪一个进程(父进程)创建的

[root@localhost bak]# ps -elf | grep lisi

    5)查看第4步找到的这个父进程的进程树

[root@localhost bak]# pstree -p 4169

login(4169)───bash(4575)───vim(4623)

    6)查看系统中是否运行了名为sshd或autofs的进程

[root@localhost bak]# pstree | grep sshd

     |-sshd

[root@localhost bak]# pstree | grep autofs

    7)统计当前主机中一共运行了多少个进程

[root@localhost bak]# pstree | wc -l

116

练习七:查看进程(top、pgrep)

    1)查看当前运行进程的动态排名,分辨CPU、内存占用情况

Cpu(s):  4.7%us,  0.3%sy,  0.0%ni, 94.6%id,  0.0%wa,  0.3%hi,  0.0%si,  0.0%st

Mem:   1023848k total,   653868k used,   369980k free,    32384k buffers

    2)在top界面中找出CPU占用比率最高的进程,并杀死此进程(k)

按P递减显示cpu占用率最高的程序

PID to kill: 3702

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND            

 3702 root      18   0 10252  756  648 S  0.3  0.1   0:00.22 hald-addon-stor 

    3)找出名称中包括auto的所有进程的名称、PID

[root@localhost ~]# pgrep -l auto

3827 automount

    4)找出用户lisi所运行进程的名称、PID号

[root@localhost ~]# pgrep -l -U lisi

13362 bash

13400 vim

    5)以用户haha登入tty3终端,执行top命令

ctrl+alt+F3

用户名密码登录

top

    6)找出在tty3终端上运行的进程的名称、PID号

[root@localhost ~]# pgrep -U haha -t tty3 -l

13564 bash

13591 top

练习八:杀死进程(需要cpuburn-in.tar.gz归档包)

    1)启动测试进程:

a)./cpuburn-in 分钟数 【下载/释放对应软件】

[root@localhost ~]# cd /root/Desktop/

[root@localhost Desktop]# ls

cpuburn-in.tar.gz

[root@localhost Desktop]# tar -zxf cpuburn-in.tar.gz -C /usr/src

[root@localhost Desktop]# cd /usr/src

[root@localhost src]# ls

abc.txt  cpuburn-in  README

[root@localhost src]# ./cpuburn-in 


CPU Burn-in v1.00 - Linux

-------------------------

Michal Mienik (c) 2000. cluster2k@hotmail.com


usage: number of minutes to run test

b)sleep  秒数

    2)查找cpuburn相关进程,并根据PID号杀死对应的进程

[root@localhost src]# pgrep cpuburn -l

13739 cpuburn-in

[root@localhost src]# kill -9 13739

[root@localhost src]# pgrep cpuburn -l

[1]+  已杀死               ./cpuburn-in 1

    3)查找名称包含slee的进程,并杀死对应进程

[root@localhost src]# sleep 10

[1]+  Stopped                 sleep 10

[root@localhost src]# pgrep slee -l

13742 sleep

[root@localhost src]# kill -9 13742

[root@localhost src]# pgrep slee -l

[1]+  已杀死               sleep 10

    4)查找在tty3终端上运行的所有进程,并强制结束

[root@localhost src]# pgrep -t tty3 -l

13564 bash

13591 top

[root@localhost src]# kill -9 13564 13591

[root@localhost src]# pgrep -t tty3 -l

    5)分别以用户lisi、haha登入,打开vim程序

分别登录tty1、3

打开vim程序

    6)杀死所有名称为vim的进程,确认结果

[root@localhost src]# pgrep -l vim

13924 vim

13964 vim

[root@localhost src]# pkill vim

[root@localhost src]# pgrep -l vim

练习九:进程前后台调度(ctrl+z挂起进程到后台)

    1)启用两个后台任务(为RHEL5.9光盘制作镜像)

a)使用cp制作镜像文件/root/rhel59_1.iso

[root@localhost ~]# cp /dev/cdrom /root/rhel59_1.iso


[1]+  Stopped                 cp -i /dev/cdrom /root/rhel59_1.iso

b)使用dd制作镜像文件/root/rhel59_2.iso(提示:dd if=输入设备 of=输出设备)

[root@localhost ~]# dd if=/dev/cdrom of=/root/rhel59_2.iso


[2]+  Stopped                 dd if=/dev/cdrom of=/root/rhel59_2.iso

    2)查看当前有哪些后台任务

[root@localhost ~]# jobs

[1]-  Stopped                 cp -i /dev/cdrom /root/rhel59_1.iso

[2]+  Stopped                 dd if=/dev/cdrom of=/root/rhel59_2.iso

    3)使用vim打开一个文件ip.txt,然后将当前的vim程序转入后台

[root@localhost ~]# vim /ip.txt


[3]+  Stopped                 vim /ip.txt

[root@localhost ~]# 

    4)启用一个sleep 1200的程序,然后转入后台

[root@localhost ~]# sleep 1200


[4]+  Stopped                 sleep 1200

    5)查看当前有哪些后台任务(jobs查看后台任务)

[root@localhost ~]# jobs

[1]   Stopped                 cp -i /dev/cdrom /root/rhel59_1.iso

[2]   Stopped                 dd if=/dev/cdrom of=/root/rhel59_2.iso

[3]-  Stopped                 vim /ip.txt

[4]+  Stopped                 sleep 1200

[root@localhost ~]# 

    6)将后台的sleep任务继续运行,查看状态(将后台任务调入前台运行)

[root@localhost ~]#bg 4

sleep 1200


    7)把后台的vim程序重新调入前台,修改文件内容、保存退出

[root@localhost ~]# fg 3

vim /ip.txt

[root@localhost ~]# 


    8)结束后台的dd任务,确认结果

[root@localhost ~]# fg 2

dd if=/dev/cdrom of=/root/rhel59_2.iso

522473+0 records in

522472+0 records out

267505664 bytes (268 MB) copied, 439.45 seconds, 609 kB/s

[root@localhost src]# jobs

[1]+  Stopped                 cp -i /dev/cdrom /root/rhel59_1.iso

[4]-  Running                 sleep 1200 &

[root@localhost src]# 


wKioL1PnaJny5R7vAARtO9m-d9Y008.jpg

wKiom1PnZ4GSHEakAAC-LM9ELYg709.jpg

wKioL1PnaJuQValSAABJt2gGa3s721.jpg

wKiom1PnZ4PxLvEIAACDDC9H-is433.jpg

wKioL1PnaJ2ibX7aAAQJAUv70JY307.jpg

wKioL1PnaJ7RC6ETAAMkqcRdA1I465.jpg

wKiom1PnZ4eyGO0SAAP2151Dq4s000.jpg

wKiom1PnZ4iDZbd5AALvRlsF2t4989.jpg

wKiom1PnZ4mhBJuaAAOgCVAlxKc070.jpg

wKioL1PnaKLyeafKAAMVxmoCnpk195.jpg

wKioL1PnaKPxJyIqAAck3f5_p-s002.jpg

wKiom1PnZ4vj0n01AAPbaKK9RZM350.jpg

wKioL1PnaKWTBmBQAAPkuicNCig409.jpg

wKiom1PnZ43R065NAASUlHzY8dg688.jpg

wKioL1PnaKeyypUiAACo0JvAxsM448.jpg

wKioL1PnaKewA4feAAUScnSabJ4725.jpg