一、引导过程及服务
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]#