Linux系统工程师基础笔记

Linux系统工程师基础笔记 --小风 2011.1.13
章文嵩说,系统架构需要三方面人才:
一是对大规模系统比较有经验的人
二是追求极致的技术型人才
三是有经济思维的技术人才
字符界面系统启动
Red Hat Enterprise Linux Server release 5.4 (Tikanga)
Kernel 2.6.18-164.e15 on an i686
Last login: Fri Nov 19 20:4417 on tty1
[root@localhost ~]# cat /etc/grub.conf
#igrub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/sda2
# initrd /initrd-version.img
#boot=/dev/sda
default=0 # 系统默认启动的第一个操作系统
timeout=5 # 设置超时,超过5秒后Grub会自动启动默认的操作系统
splashimage=(hd0,0)/grub/splash.xpm.gz # 设置Grub的背景图片
# password --md5 $1$RlISq/$FNU6SF.mCmwTidp33zei70 # 设置Grub的密码 /sbin/grub-md5-crypt
hiddenmenu # 隐藏操作系统选择菜单
#定义启动选择菜单中的第一个操作系统
title Red Hat Enterprise Linux Server (2.6.18-164.el5)
# lock # 开启Grub密码功能
root (hd0,0)
# 内核所在的磁盘分区 (hd0,0)表示第一块硬盘的第一个主分区/boot相当于Linux中hda1 ,
# (hd0,1)表示第一块硬盘的第一个逻辑分区,Linux中表示hda5
kernel /vmlinuz-2.6.18-164.el5 ro root=LABEL=/ rhgb quiet
# 设置内核文件的名称,ro表示只读 后面是传递给内核的选项
initrd /initrd-2.6.18-164.el5.img
# 设置内核映像
title Other # 定义第二个操作系统
rootnoverify (hd0,5) #另外一个系统的启动分区,第一块磁盘的第六个分区,即第二个逻辑分区
chainloader +1 #启动时从上面指定的启动分区的第一个分区读取启动程序
系统引导顺序
1.BIOS:位于系统主板只读存储器上的微型操作系统
2.引导程序:从磁盘的主引导记录(Master Boot Record)上装载Linux内核和传递控制权
3.内核:Linux内核对内部结构和设备驱动程序进行初始化,提供初始的文件系统,启动第一个进程。
4./sbin/init: /sbin/init进程执行大多数繁重的工作(与系统管理管理有关),来对机器进行初始化。

第一阶段:BIOS启动引导阶段;
在该过程中实现硬件的初始化以及查找启动介质;
从MBR中装载启动引导管理器(GRUB)并运行该启动引导管理
第二阶段:GRUB启动引导阶段;
装载stage1
装载stage1.5
装载stage2
读取/boot/grub.conf文件并显示启动菜单;
装载所选的kernel和initrd文件到内存中
第三阶段:内核阶段:
接管BIOS,用Linux取代BIOS设备驱动程序
运行内核启动参数; /proc/cmdline
解压initrd文件并挂载initrd文件系统(只读),装载必须的驱动;
挂载根文件系统
启动第一个进程
第四阶段:Sys V init初始化阶段:
启动/sbin/init程序;
运行/etc/rc.d/rc.sysinit脚本,设置系统环境,启动swap分区,检查和挂载文件系统;
读取/etc/inittab文件,运行在/etc/rc.d/rc<#>.d中定义的不同运行级别的服务初始化脚本;
打开字符终端1-6号控制台/打开图形显示管理的7号控制台
/etc/rc.d/rcN.d 下的脚本都是链接文件,均指向init.d目录下的脚本文件,S开头的是该启动,
K开头的会终止对应得服务,nn数字是脚本执行顺序,S开头的由小到大,K开头的由大到小
根 (/) 目录下的常见目录列表如下:
---------------------------------------------------------------------------------
/bin - 重要的二进制 (binary) 应用程序
/boot - 启动 (boot) 配置文件
/dev - 设备 (device) 文件
/etc - 配置文件、启动脚本等 (etc)
/home - 本地用户主 (home) 目录
/lib - 系统库 (libraries) 文件
/lost+found - 在根 (/) 目录下提供一个遗失+查找(lost+found) 系统
/media - 挂载可移动介质 (media),诸如 CD、数码相机等
/mnt - 挂载 (mounted) 文件系统
/opt - 提供一个供可选的 (optional) 应用程序安装目录 只存在于内核里德一种虚拟文件系统
/proc - 特殊的动态目录,用以维护系统信息和状态,包括当前运行中进程 (processes) 信息。
/root - root (root) 用户主文件夹,读作“slash-root”
/sbin - 重要的系统二进制 (system binaries) 文件
/sys - 系统 (system) 文件
/tmp - 临时(temporary)文件
/usr - 包含绝大部分所有用户(users)都能访问的应用程序和文件
/var - 经常变化的(variable)文件,诸如日志或数据库等。
------------------------------------------------------------------------------------
# shutdown -h --关机
# shutdown -r --重启
# halt -f --强行关机
# reboot -f --重启,-f强行
# init 0 --关机
# init s --进入单用户模式,同init 1
# init -b --直接进入单用户模式Shell,而不执行其他启动脚本
history命令的使用
# history #显示历史命令
# !656 #再次执行第656号命令
# history 5 #显示最近5个命令
# history -c #清空历史命令
系统信息查看系统
# uname -a # 查看主机名/内核/操作系统/CPU信息 -r 查看系统版本
# head -n 1 /etc/issue # 查看操作系统版本
# cat /proc/cpuinfo # 查看CPU信息 ?怎么查看有多少CPU
# cat /proc/cpuinfo |grep "physical id"|sort -u |wc -l
# getconf LONG_BIT --查看CPU多少位
# hostname # 查看计算机名
# lspci -tv # 列出所有PCI设备
# lsusb -tv # 列出所有USB设备
# lsmod # 列出加载的内核模块 modprobe--加载模块
# env # 查看环境变量
# set # 查看环境变量

系统资源
-查看内存
# free -m # 查看内存使用量和交换区使用量 '-m':单位Mb
# cat /proc/meminfo #查看内存相关信息
# grep MemTotal /proc/meminfo # 查看内存总量
# grep MemFree /proc/meminfo # 查看空闲内存量

# du -sh <目录名> # 查看指定目录的大小
--查看系统负载
# uptime # 查看系统运行时间、用户数、负载
# tload #显示系统负载
# cat /proc/loadavg # 查看系统负载

-查看磁盘
# df -h # 查看各分区使用情况
# fdisk -l # 查看磁盘空间
磁盘和分区
# mount | column -t # 查看挂接的分区状态 'column -t'使个字段对齐
# mount -o loop rhel.iso /mnt #?'-o loop'参数
# fdisk -l # 查看所有分区
# swapon -s # 查看所有交换分区
# hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)
# dmesg | grep IDE # 查看启动时IDE设备检测状况
网络
# ifconfig # 查看所有网络接口的属性
# iptables -L # 查看防火墙设置 service iptables status
# route -n # 查看路由表
# netstat -lntp # 查看所有监听端口
# netstat -antp # 查看所有已经建立的连接
# netstat -s # 查看网络统计信息
# netstat -nat | grep -i "80" |wc -l #查看80端口连接数
# lsof -i :port,使用lsof -i :port就能看见所指定端口运行的程序,同时还有当前连接。

进程
# ps -ef # 查看所有进程
# top # 实时显示进程状态
# ps -ef | grep httpd |wc -l #显示web服务进程数
# ps -u root -N #显示非root用户身份运行的进程
# ps -C httpd -o pid= #显示httpd相关的进程号。一般杀死主进程号即可
用户
# w # 查看活动用户
# id <用户名> # 查看指定用户信息
# last # 查看用户登录日志
# cut -d: -f1 /etc/passwd # 查看系统所有用户
# cut -d: -f1 /etc/group # 查看系统所有组
# crontab -l # 查看当前用户的计划任务 -e 编辑 -u 用户的crond -r删除
# *全值`每` -范围 ,指定的 /5 每隔5 #注释掉
# tty # 查看当前终端
# ac -p # 查看每个用户的连接时间
# ac -d # 查看用户每天的连接时间
# lastlog # 查看每个用户最后登录时间
# finger zhang # 查看用户的详细信息
# pkill -kill -t pts/12 #踢掉用户
服务
# chkconfig --list # 列出所有系统服务
# chkconfig --list telnet
# chkconfig --list | grep on # 列出所有启动的系统服务
程序
# rpm -qa |grep httpd # 查看所有安装的软件包
# rpm -ivh RealPlayer10 GOLD.rpm
# rpm -evh --卸载软件包
# rpm -qp
# rpm -qf `which df` --查看df命令由那个包安装生成的 `which df`中'`'符号是1左边的
# rpm -qf /etc/dhcpd.conf --查看文件是由哪个包安装生成的
源码安装
# cd httpd-2.2.9
# ./configure --prefix=/opt/apache2.2.9
# make
# make install
/ /网络设置
# hostname
# lspci --列出所有PCI设备,确定机器有一块以太网卡。
# vi /etc/sysconfig/network --修改主机名
# vi /etc/sysconfig/network-scripts/ifcfg-eth0 --网卡配置 动态IP

# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth1
BOOTPROTO=dhcp
ONBOOT=yes
HWADDR=00:0c:29:dd:52:5d

# ifconfig eth0 192.168.1.100 netmask 255.255.255.0
# ifconfig eth0:0 192.168.1.200 netmask 255.255.255.0
# ifconfig eth0 up/down --ifup/ifdown eth0
# route add/del default gw 192.168.1.1 --添加网关
# route add –host 192.168.168.110 dev eth0 --添加到主机的路由,linux下的路由只是静态的
# route add –host 192.168.168.119 gw 192.168.168.1
# route add -net 192.168.60.0 netmask 255.255.255.0 dev eth0 --添加到网络的路由
/ /开启linux代理转发功能
# echo“1”> /proc/sys/net/ipv4/ip_forward
或者
# vi /etc/sysctl.conf
net.ipv4.ip_forward=0
#sysctl -p --使修改马上生效
//网络服务重启
# service network reload/restart
$ DNS配置
# cat /etc/hosts --将主机名和IP地址进行匹配的简单数据库
# cat /etc/resolv.conf --指定域名服务器和默认的DNS搜索域

//添加用户
# cat /etc/passwd --用户相关信息
# cut -d: -f1 /etc/passwd --查看系统所有用户
# cut -d: -f1 /etc/group --查看系统所有组
# cat /etc/passwd |awk -F':' '{print$1}'
# groupadd zhang
# useradd -g zhang xiaofeng
# passwd xiaofeng
# userdel xiaofeng
# userdel -r xiaofeng --递归删除,同时删除用户主目录
//权限管理
# cd /home/xiaofeng
# mkdir kaka
# ll
# chmod 755 kaka
# chown xiaofeng.zhang kaka
--------------------------------
#chown xiaofeng kaka
#chgrp zhang kaka
#rm -fr kaka
//文件管理
$su root
#pwd
#ls
#ll
#ls --all
#cd /
#ls -a
#cd /home/xiaofeng
#file kaka --显示文件类型
#du -sh /home/xiaofeng --查看目录容量
#df -Th --查看磁盘分区
#mkdir gaga
#cd gaga
#touch a.txt
#cp a.txt ..
#ll ..
#rm -rf a.txt
#cd ..
#rmdir gaga --当目录为空时
#mv a.txt b.txt
#cp b.txt ..
#ln -s b.txt /b.ln
//find 命令的使用
#find /root -iname "install*"
#find /etc -ctime -10 --查看/etc下过去十天内被修改过的文件
#find /etc -cmin -10
#find /etc +atime -10
#find /etc -type d --查看/etc下的所有目录文件
#find /root -name "install*" -cmin -10
#find . -name '*.doc' -exec rm {} \; --查找当前目录下的所有 .doc 文件,并删除之
#find . -user 'zhang' -print --查看当前目录下的用户zhang的所有文件并显示
#whereis find --查看find指令的路径
//U盘,光盘挂载
# fdisk -l --查看系统分区,确定U盘所在分区
# mkdir /mnt/usb
# mount -t vfat /dev/sda1 /mnt/usb
# umount /mnt/usb --
# mount /dev/cdrom /media
# eject /media --弹出光驱
# eject -t --弹回光驱
//压缩,解压缩
# tar -zcvf ~/xxx.tar.gz /home/kaka * --c建包, ~/xxx.tar.gz建包于家目录下, /home/kaka 要打包的目录
# tar -jcvf ~/xxx.tar.bz2 /home/kaka *
# tar -zxvf xxx.tar.gz /home/kaka * --'v'显示过程信息,'f' 后加文件名,'z'指定.gz格式压缩包 75%压缩率
# tar -zjvf xxx.tar.bz --'j'指定.bz格式压缩文件
# tar -tvf xxx.tar.gz/bz * --查看包内容
2010.10.11
--------------------------------------------------------------------
// I/O:
# ll /dev/std*
1> 标准输出 > >> --'>'覆盖原内容,'>>'只加入到源文件最后
2> 错误输出
0> 标准输入 <
# find /etc -name passwd > alloutput 2>&1 --标准,错误同时输出到
# tr 'A-Z' 'a-z' < .bash_profile --标准输入 ,并做大写转换为小写
//cut(剪切):
cut -f3 cut.tab --选择第三列,
cut -f2 -d, cut.csv --选择第2列,以','作为间隔符
cut -c4-8 cut.csv --选择第四个字到第八个字的列
//sort(整理排序):
# sort sort.1 --默认从大到小
# sort -ruf sort.1 --r倒序,f不区分大小写,u Unique
# sort -t: -k3 /etc/passwd --间隔符号为':',k3是以第三列字符做排列
# sort -t: -n /etc/passwd --n是以数字作为排列
// Pipes '|':
# ls -l /etc |less --按页显示,空格翻页
# cut -f1 -d: /etc/passwd | sort -r | less --以':'作为间隔符,选择第一列,并倒序排列,用less一页一页的显示
//mail
# mail -s "mail" zhang --发送邮件给用户zhang,-s "mail"为标题
Goodluck
.
cc:
# mail -s "mail" zhang < test.mail
#
# cat /var/spool/mail/zhang
#mail --利用交互式,查看邮件
&2 --查看第二份信件
&x --退出不删除
&q --退出并删除 保存到~zhang/mbox
# cat ~zhang/mbox
# ls -l | mail -s "mail" zhang

2010.10.21
================================================
//Patitiongs and Filesystem
逻辑分区:IDE 63个 SCSI 15个
# fdisk -l
ID 标签
83 Linux
82 Linux Swap
Fd Linux raid auto
8e Linux LVM
block --4k
ext2
ext3 --多了日志功能
inode --index node
inode table:
------------------------------------------------------------------------------------------
inode-no | file type |permission | link count | uid | gid | size | time stamp | pointer
1 -/d/l/b 755 1/2 500 500 blocks
-------------------------------------------------------------------------------------------
# Hard links
Have the same inode table with source file
Cannot span drives or partitions
Link count is 2
# Filetypes
- regular file
d directory
l symbolic links
b block special --ls-l /dev/sda1
c character special file --ls-l /dev/mice 表示键盘,滑鼠等
p named pipe --ls-l /dev/initctl 表示process之间传输资料
s socket --ls-l /dev/gpmctl 表示在程式之间进行沟通
# Create Filesystem
1.create partition --block 4k
2.create filesystem
mkfs.ext3
mkswap --建立swap文件系统
mkfs.vfat
mkfs -t vfat /dev/hdc --同上
3.mount
# mkfs -t ext2 /dev/fd0 --格式化为文件系统
# mount
# mke2fs /dev/fd0 --同上格式化为文件系统ext2
# df -h --Checking free space
# du -h /root |more --/root下所有文件使用空间
# du -sh /root
//例:添加新硬盘
# fdisk -l
# fdisk /dev/sdb
Command (m for help): m
Command (m for help): p
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (63-1305, default 63):
Using default value 63
Last cylinder or +size or +sizeM or +sizeK (63-609, default 609):
Using default value 609
Command (m for help): w
# mkfs -t ext3 /dev/sdb2
# mkdir /myfile
# mount /dev/sdb2 /myfile
# vi /etc/fstab --/etc/mtab
LABEL=/ / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
tmpfs /dev/shm tmpfsdefaults 0 0
devpts /dev/pts devptsgid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
LABEL=SWAP-sda3 swap swap defaults 0 0
/dev/sdb2 /myfile ext3 defaults 0 0
//添加新的swap分区
# mkswap /dev/sdb2
# free
# swapon /dev/sdb2
# free
# vi /etc/fstab --添加开机自动挂文件系统
/dev/sdb2 swap swap defaults 0 0

2010.10.25
=====================================================
bash shell
# set | more --查看环境变量
# FAV_COLOR=blue
# echo $FAV_COLOR
# echo $PS1
# PS1='[\u@\h \w]\$'
\d today's date
\h short hostname
\t current time
\u user name
\w current working directory
\! the history number of current command
\$ if you are a non-privileged user
\l the basename of the shell's terminal device name
# alias -p
# alias lf='ls -laF'
# export FAV_COLOR=blue --升级为环境变数
# unset FAV_COLOR --删除变数,注意root下和普通用户下的删除
//常见环境变数
HOME
LANG
PWD --目前所在目录
TERM --设定终端类型
PATH --命令的所在路径
//
login shells
./etc/profile --set PATH,USER,LOGNAME,MAIL,HOSTNAME,HISTSIZE,INPUTRC等变数
./etc/profile.d
. ~/.bash_profile --家目录下的自己的设置,
. ~/.bashrc --打开终端时,自动运行
./etc/bashrc
Non-login shells
.~/.bashrc
./etc/bashrc
./etc/profile.d
logout
.~/.bash_logout --自动备份,删除temp,显示登出时间等

2010.11.1
============================================================
//USER AND GROUP
Linux用户有3类:根用户,虚拟用户,普通用户
root UID 为0 ,普通用户的UID介于 500-60000之间
/etc/passwd
root:x:0:0:root:/root:/bin/bash
7个字段
用户名,用户口令,UID,GID,用户信息描述,用户主目录,登录Shell
/etc/shadow
root:$1$y5iLSUMp$lIhtOL10Q0InEJC360ujQ/:14896:0:99999:7:::
9个字段
用户名,
加密后的口令,
最近一次修改口令的时间与1970.01.01的间隔天数,
指定用户必须经过多少天后才能再次修改其口令,0则禁用该功能
指定口令在多少天后必须修改,
到达该时间,用户登录系统时将被提示口令将要过期
当用户口令过期后达到该时间限制后,系统将会禁用该用户,用户将无法登录系统
指定用户自1970.01.01以来被禁用的天数,若字段为空,则用户一直可用
保留字段
/etc/group
root:x:0:root
4个字段
用户组名,口令,GID,组成员列表
# cat /etc/passwd --用户信息
/etc/shadow --用户密码信息
/etc/group
/etc/gshadow
# passwd zhang
# su - zhang
# echo $PATH
# passwd --status zhang
# whoami
# groups --所属组
# id
# who --或users,w 查看系统登录用户
# last --查看用户登录时间和系统重启信息记录
# umask --查看权限遮罩 默认002 root用户是022:对应644 rw-r--r--
File 666 rw- rw- rw-
umask 033 --- -wx -wx
-------------------------------
644 rw- r-- r--
# umask 033 --设置默认遮罩,即设置新建文件的默认权限
//特殊权限 --所有用户以root身份出现使用
# suid/4 sgid/2 sticky/1 --特殊权限,小写包含X执行权限,大写不包含
# chmod u+s file1 --添加特殊权限suid
# chmod o+t file1 --添加特殊权限sticky(此权限只有root和拥有者才可删除,不看w权限 在/tmp经常使用)
# chmod 2755 file1 --添加特殊权限sgid
# chmod 7755 file1 --添加所有特殊权限
2010.11.2
=================================================
# head -10 /etc/inittab --默认是 10 lines
# tail -5 /etc/passwd
# tail -f /var/log/messages --即时查看文件动态更新内容
# wc README
# wc -l --line
# wc -w --word
# wc -c --character
# uniq -c
# paste
# tr 'A-Z' 'a-z' < .bash_profile --字符转换
# cat -A a.txt | tr '$' '\r' > b.txt --将Linux下文档段落分隔符$ 转义为 \r DOC下格式
# unix2doc a.txt --转换格式
# diff ABC abc --< 指 第一个文档 > 指第二个文档
# sdiff ABC abc
# aspell check letter --检查拼写错误
#
[root@localhost ~]# cat /proc/loadavg
4.61 4.36 4.15 9/84 5662
每个值的含义为:
参数 解释
lavg_1 (4.61) 1-分钟平均负载
lavg_5 (4.36) 5-分钟平均负载
lavg_15(4.15) 15-分钟平均负载
nr_running (9) 在采样时刻,运行队列的任务的数目,与/proc/stat的procs_running表示相同意思
nr_threads (84) 在采样时刻,系统中活跃的任务的个数(不包括运行已经结束的任务)
last_pid(5662) 最大的pid值,包括轻量级进程,即线程。
# getconf LONG_BIT --查看CPU多少位
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值