Linux系统工程师基础笔记

Linux系统工程师基础笔记 --小风 2011.1.13 http://blog.sina.com.cn/s/blog_638010910100o7og.html 章文嵩说,系统架构需要三方面人才: 一是对大规模系统比较有经验的人 二是追求极致的技术型人才 三是有经济思维的技术人才 字符界面系统启动 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多少位


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部