Linux系统管理基础知识

字符界面系统启动
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                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=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多少位

你可能感兴趣的:(Linux系统)