lamp 笔记

本文介绍了Linux系统从固件自检到启动服务的过程,包括MBR、BootLoader、内核加载、init进程、运行级别的设定。讲解了如何在不同运行级别下启动、关闭服务,以及设置自启动程序的方法,如chkconfig和ntsysv。此外,还提到了Ubuntu的启动脚本管理和Shell编程基础,包括变量定义、位置变量和特殊变量的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >






文件系统管理
/usr/bin  存放用户可以执行的命令
/usr/sbin  存放只有root可以执行的命令
/home   用户缺省宿主目录
/proc   虚拟文件系统,存放当前内存镜像
/dev   存放设备文件
/lib    存放系统程序运行所需的共享库
/lost+found   存放系统出错的检查结果
/tmp   存放临时文件
/etc   系统配置文件
/var   包含经常发生变动的文件,如邮件、日志
/usr   存放所有命令、库、手册  =c:\windows
/usr/local    =c:\program files
/mnt   临时文件系统的安装点    =mount
/boot  内核文件及自举程序文件保存位置
查看分区情况  df 
df -h         human 人性化的
查看文件、目录大小   du
du -sh *  
检测修复文件系统  fsck  e2fsck  单用户模式
fsck -y      file system check 
mkfs 格式化
/etc/fstab    定义新增的分区(硬盘)重启自动挂载
dd命令:   
dd if=/dev/sda of=/dev/sdb  把sda完全拷贝到sdb
dd if=/dev/zero of=/var/swap/file.swp bs=1024k count=64
创建一个64M固定大小的文件(bs =block size)
mkswap /var/swap/file.swp   将创建的文件当做swap空间用
swapon /var/swap/file.swp   启用这个swap空间
用 free -m 查看   启用后swap的大小会增大64M
linux 两个伪设备(假的设备) 
/dev/zero -- 不断往输出写0,不断往固定文件写0
/dev/null -- 黑洞、回收站
磁盘配额,限定用户使用磁盘空间的大小:
1.在/etc/fstab 开启磁盘配额功能  usrquota
mount -o remount /home
2.创建配额数据库(进入单用户模式)
quotacheck -cvuga    会生成aquota.user、aquota.group两个文件
3.启动配额功能   quotaon /home
4.编辑用户配额   edquota 用户名



进程管理
在命令后面加一个&, 则这条命令与shell同步运行,即在后台运行。
例  find / -name init > /test/init.find &    在后台运行不在前台显示,运行结果输入到init.find下。
ps  a:显示所有用户的进   all
    u:显示用户名和启动时间  user
    x:显示没有控制终端的进程   
    e:显示所有进程,包括没有控制终端的进程
    l:长格式显示
    w:宽行显示
ps -u or -l  查看隶属于自己进程详细信息
ps -le or -aux  查看所有用户执行的进程的详细信息
ps列出的常见的参数:
PID 进程号     PPID父进程的进程号
TTY 进程启动的终端,查看本地登陆还是远程登陆  
STAT 进程当前状态
NI 进程优先级
kill -9 进程号  强行关闭
kill -1 进程号  重启进程  =kill -1 'pgrep 进程名'
xkill  关闭图形程序
killall   结束所有进程
pgrep 服务名称   查找服务进程号(PID)
pkill 服务名称   关闭进程
cat /proc/cpuinfo  获得当前CPU的信息
cat /proc/meminfo  获取内存信息
cat /proc/partitions  获取当前分区信息
优先级命令:
nice   指定程序的运行优先级   nice -n command
renice  改变一个正在运行的进程的优先级  
renice n pid
nohup 使进程在用户退出登陆后仍旧继续执行 (可用户备份、find)
格式:nohup program & 
例: nohup find / -name init* > /root/find.init &
进程的挂起和恢复:
挂起(暂停)  ctrl+Z
终止          ctrl+C
注:有两种进程是在前台看不到效果的
1.被挂起的,(ctrl+Z)    2.放在后台执行的,(命令后+&)
查看被挂起的进程   jobs
被暂停的进程恢复到前台继续运行  fg
被暂停的进程恢复到后台继续运行  bg
top  进程状态显示和进程控制,每5s自动刷新
选项  d刷新时间  r改优先级  h帮助 等……

计划任务
at  一次性计划任务
batch
crontab  周期性计划任务
samba服务器配置
samba是通过服务器消息块协议(SMB)在网络上计算机之间共享文件的软件包
SMB(server message block)
grep -v "^#" /etc/samba/smb.conf |more  提取有效设置行
grep -v "^#" /etc/samba/smb.conf > /etc/samba/smb.conf 提取并生成覆盖
[global]段
workgroup= 指定工作组或域
server string= 描述
security = 指定安全模式
1.share 无权限验证 
2.user  缺省的设置,由samba服务器做验证
3.server  第三方主机验证
4.domain  第三方主机验证(第三方必须是windows域控制器)
hosts allow = 限定主机访问
log file = 指定日志位置
max log size = 日志文件大小
[homes]段
comment = 描述
browseable = no 无权限共享目录隐藏

writable = yes 可写


注:防火墙
netfilter/iptables     #iptables -F
SELinux          # setsebol -P  

samba_enable_home_dirs on

gesebool -a  查看所有策略
gesebool -a | grep samba   查看samba策略
smbstatus   查看访问的客户端信息
samba服务器测试命令:
testparm     测试语法错误






LINUX引导流程解析
固件加载(CMOS/BIOS)(POST加电自检)
→转到MBR读取BootLoader(GRUB)(GRUB作用载入内
核)
→载入内核kernel(驱动硬件)
→启动进程init  (初始化initialization)
→读取执行配置文件/etc/inittab(固件进行硬件自检,读取自举程序bootloader,bootloader负责加载内核,内核在加载以后做两件事情,分别是驱动硬件和启动init进程,init进程会读取配置文件/etc/inittab,完成后续的引导过程)

硬件时钟 hwclock   软件时钟date

init的工作
init启动后读取inittab文件,执行缺省运行级别,从而继续引导过程。init的PID恒为1,但它必须向一个更高级的功能负责:PID为0的内核调度器(kernel scheduler),从而获得CPU时间。

man inittab    查看系统配置文件的帮助信息


/etc/rc.d/rc.sysinit 脚本,每次启动会运行一次,完成系统服务程序启动,如系统环境变量设置、加载字体、检查加载文件系统等。


/etc/rc.d/rc脚本的作用 判断系统缺省的运行级别,然后启动对应运行级别目录下的服务执行/etc/rc.d/rcn.d 完成后续的引导 n为(0-6)

rcn.d里面例如S12syslog  S-start    K-kill   数字-启动顺序   脚本名称


回顾:

linux系统在引导的过程里面,第一步是进行固件的加电自检 firmware →读取硬盘上面存储数据的第一个位置 即主引导记录 MBR,在MBR里面最重要的是存放了一个自举程序BootLoader,(bootloader在linux系统里面广泛采用的是GRUB)bootloader作用是载入内核kernel,在载入内核以后,内核有两个作用,一是在linux系统的层次上驱动硬件,二是→启动一个进程 init → init进程在启动以后读取系统的配置文件/etc/inittab→ 首先判断系统缺省的运行级别/etc/initdefault → 执行脚本 /etc/rc.d/rc.sysinit 这个脚本不管系统在任何运行级别都会缺省被执行,来进行一些系统基本服务的加载,→ 执行脚本 /etc/rc.d/rc 判断initdefault,→启动对应的启动目录下面的服务程序 /etc/rc.d/rcN.d  N=0-6  进入用户名密码验证

linux系统启动以后要关闭或开启某服务,进目录/etc/rc.d/init.d ,该目录下包含各个运行级别的服务程序脚本
例:手动启动sshd服务 /etc/rc.d/init.d/sshd start
/etc/rc.d/init.d/sshd status  查看运行状态
/etc/rc.d/init.d/sshd 按回车会有提示信息

设置自启动程序:(ln -s   chkconfig   ntsysv)
vi /etc/rc.d/init.d/msg.script  自建脚本msg.script
chmod u+x /etc/rc.d/init.d/msg.script  给脚本执行权限
ln -s /etc/rc.d/init.d/msg.script 
/etc/rc.d/rc3.d/S100msg.script  设置在运行级别3下自启动
chkconfig --levels 2345 sshd off 在2345运行级别关闭sshd的自启动
ntsysv --level 3     改变运行级别3的自启服务
运行dmesg检查引导期间的错误
是否在启动时识别到网卡  dmesg |grep eth0
是否识别添加的硬盘      dmesg |grep sdb
/var/log/messages   检查系统日志
/var/log/boot.log   记录启动错误
启动一个服务时没有办法正常启动,可以查询messages文件获取这个服务在启动时是否正常  
grep syslog /var/log/messages  查询syslog服务在messages里面的信息



ubuntu设置自启动项
1) 将你的启动脚本复制到 /etc/init.d目录下
以下假设你的脚本文件名为 test。
2) 设置脚本文件的权限
$ sudo chmod 755 /etc/init.d/test
3) 执行如下命令将脚本放到启动脚本中去:
$ cd /etc/init.d
$ sudo update-rc.d test defaults 95
卸载启动脚本的方法:
$ cd /etc/init.d
$ sudo update-rc.d -f test remove

GRUB的配置文件默认为/boot/grub/grub.conf
软链接  /etc/grub.conf
grub的配置文件以及grub的一些应用程序是存放在/boot目录下的,内核文件vmlinuz也是在/boot目录下,(hd0,0)就是第一块硬盘的第一块分区 即/boot所在分区





Shell编程
shell 结构:
#!指定执行脚本的shell
# 注释行
创建shell程序的步骤:
1.创建一个包含命令和控制结构的文件
2.修改这个文件的权限使它可以执行,使用chmod u+x
3. 执行 ./example (也可使用"sh example")
shell里面对变量的定义
shell有两类变量:临时变量和永久变量
变量定义习惯上用大写字母开头,用echo命令查看变量值。例如:echo $NUM
包含多个字的变量:$NAME='Mike Ron' 或 $NAME="Mike Ron"
单引号之间的内容原封不动地指定给变量:
双引号 ABC="time is $DATE"
echo $ABC 输出:time is 2015-12-20
单引号 ABC='time is $DATE'
echo $ABC 输出:time is $DATE


# set   列出所有的变量
# unset NAME  删除变量
位置变量:Shell解释执行用户命令时,将命令行的第一个部分作为命令名,其它部分作为参数。
例如:ls -l file1 file2 file3
$0 表示ls-l
$1 表示file1
位置变量用途实例:
#!/bin/sh
DATE='/bin/date +%Y%m%d'   提取date的年月日 
/bin/tar -cf /backup/$1.$DATE.tar $1 > /dev/null 2>> /backup/$1.bak.log
#用目录名来命名备份文件,提示信息不看,丢到null,错误日志放在backup下面。
……
执行上面脚本时 sh autobak.sh /etc
→脚本里面的$1就是/etc

特殊变量:
$* 这个程序的所有参数
$# 这个程序的参数个数
$$ 这个程序的PID
$! 执行上一个后台命令的PID
$? 执行上一个命令的返回值(0表执行成功)

$0 表示命令本身


Shell命令
read命令:从键盘读入数据,赋给变量
应用实例:编写脚本read.sh
#!/bin/sh
read first second
echo "the first parameter is $first"
echo "the second parameter is $second"
执行上面的脚本 sh read.sh
提示输入 100 200
输出the first parameter is 100
        the first parameter is 200

命令sh -x read.sh
脚本执行时会显示执行过程

expr命令(shell变量的算术运算)
例expr 3 + 5
expr $var \* 10  (乘法)

变量测试语句:test
test str1=str2  测试字符串是否相等
test int1 -eq int2  测试整数是否相等
test -d file 测试文件是否为目录
……
变量测试语句可用[]进行简化,如
test -d $1 等价于 [-d $1]
实例:
#!/bin/sh
web='/usr/bin/pgrep httpd'
if [ "$web" = "" ]
then
/etc/rc.d/init.d/httpd start
fi


时间计划任务
crontab -e 
# m h  dom mon dow   command
具体意义表示:分钟 小时 日期 月份 星期 命令,在某月(mon)的某天(dom)或者星期几(dow)的几点(h,24小时制)几分(m)执行某个命令(command),*表示任意时间。例如:
3 * * * * /home/meng/hello.sh
每小时的03时执行/home/meng/下的hello.sh脚本。
*/2 12-14 * * 1-5 test.apache  
周一到周五每天12点到14点每隔两分钟 启动apache


#!/bin/sh
# test mysql is running
data=`/usr/bin/pgrep mysql`
if [ "$data" !=  "" ]
then
   echo "the mysql is running"
else
   echo "the mysql is not running"
   /usr/bin/service mysql start
fi




awk ‘命令’
awk -F 域分隔符‘命令’
默认分隔符为空格




























评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值