2012-11-20

一、red hat 发布版的安装

  启动时输入 boot: linux askmethod    选择可以通过硬盘或者网络安装。
     boot:
     linux dd    driver disk 安装   如服务器安装时需首先安装阵列卡驱动
     linux ks     kickstart 安装    无人值守安装方式,原理直接配置文件安装,如:boot: linux ks=nfs:192.168.0.254:/var/ftp/pub/ks.cfg

2、分区:/boot     200M   必须

  swap 分区为内存的1到2倍

  /   根分区(需求不明确时可以把剩的空间划分为上述分区,如有需求如需安装oracle,可以需划分u01等分区)

上述为三个基本分区!

3、boot loader password   需设置,不然root密码形同虚设。

4、安装过程中,ctrl+alt +F1 ---F7 之间切换 返回命令界面

5、linux 内核位置:/boot/vmlinuz-2.6.9-22.EL


界面转换:authconfig

二、linux操作系统的基本结构:

1、kernel   内核   
     uname -a   查看kernel的版本号!
2、modules  模块    3、 lib 库    4、app 应用程序

    不同控制台之间发送消息:
      echo AAAAA> /dev/tty1
     who am i   查看当前登录的用户
     w   查看控制台/或登录用户
     skill 掉某个用户或终端命令:skill -9 pts/2
     默认为6个终端,修改以下配置文件可以更改:vi /etc/inittab
      vi  退出保存 :wq

      启动Xwindow   :startx   启动第一个xwindow
                                 startx -- :1  启动第二个xwindow

三、linux命令:

1、shell 的内部命令:shell 本身提供的功能
   
     提供帮助方法:help

2、shell 的外部命令:由外部文件提供

     提供简单帮助方法:命令+ --help
      man   +命令   提供详细的帮助方法
     使用方法 :搜索 /+关键字 或?+关键字     n向下滚动,shift+n  向上滚动   
     man 7 man 查看  共9种类型文件

info 帮助命令,使用得较少,与man类型,但比较详细。

3、linux 命令的习惯:
    1、命令及参数区分大小写;
    2、程序可否执行与扩展名无关;(添加chmod  x 权限即可)
    3、使用tab键来补全命令
    4、善用寻求帮助形式。

一些快捷键:
ctrl +c 直接暂停    ctrl+z  直接丢后台暂停   ctrl +l  清屏

四、文件操作命令:
1、touch 创建文件 ,更新文件,touch /etc/{a,b}   创建两个文件。
   
     mkdir  创建文件夹
    
     rmdir    删除文件夹  (只可以删除空的文件夹)--较少用
   
    查看文件属性详细信息命令:stat   如:stat a

     前面带点的文件为隐藏文件,如.a  ,查看时需这样操作:ls -a
   
      查看当前目录:pwd

2、ls   查看文件
    
     ls -F  查看文件类型,如文件夹为/a ,带@为链接文件 ,带 *号为执行文件。

3、mv  移动或重命名  

      mv  b c  更换b文件为c名

4、 rm 删除

     rm -f  删除一个文件不需要确认
     rm -r  删除一个文件夹
     rm -rf  删除一个文件夹包括里面所有文件,不需要询问

5、. 代表当前目录  ,  .. 代表当前目录的上一级目录, cd -  回到上一目录

6、 cat  查看文件内容,more和less也是查看文件内容
   more可以一页一页查看,但只能往下翻;
   less  也可以一页一页查看,可以上下翻;

7、vi  命令

   q!不保存退出

    u  撤消

    ctrl + r   重做

8、alias  别名

   如定义一个别名:alias ii ="ls -l"
   删除别名:  unalias ii

9、 重要,关于配置文件,vi ~/.bashrc  

10、添加用户:

   useradd ming  (添加用户时需设置密码才可以登录)
   passwd ming  如不加用户名即修改当前用户的密码

11、su ming  在当前界面切换帐户,
       su - ming  切换到另一帐户

6-3 系统命令初步

查看计算机信息:
1、hostname   查看计算机名,更改时直接后面加上计算机名(重启不生效),更改以下配置文件永久生效:/etc/sysconfig/network

2、更改IP信息:
ifconfig eth0 192.168.1.80    (重启不生效)
vi /etc/sysconfig/network-scripts/ifcfg-eth0   (更改配置文件)

netconfig 
service network restart   (netconfig 后重启服务生效)

3、id

root 的id为0  组id也是为0

4、date

   date +%d    显示日期
    date +%m%d   显示月份日期
如创建  一个以时期命名的log:touch `date +y%m%d%`.log

5、file  查看文件类型(详细)
    file  a

6、mount   加载 

    mount  /dev/sda2 /mnt  把sda2 加载到mnt

     umount  取消加载

    加载u盘使用:mount  /dev/sdb1  /file1
    加载光驱使用: mount /dev/cdrom /mnt
    加载共享:mount -t cifs //192.168.0.2/tools /mnt
                    mount //192.168.0.2/tools /mnt
                     mount -o username=administrator //192.168.0.20/tools /mnt

   加载nfs   :mount 192.168.0.20:/var/ftp/pub  /mnt

7、cat /dev/cdrom > a.iso  
 mount -t iso9660 -o loop a.iso /mnt
查看光盘内容

8、du   查看文件的大小
   
     du a.tar  查看文件大小
     du -s a 查看文件夹大小
     du -sh a

9、df  显示分区大小情况

    df -h   显示分区大小使用量

10、ssh  远程登录

    ssh 192.168.0.20
    ssh  scott@192.168.0.20  以什么用户远程登录

11、exit   退出当前shell
       logout  退出登录shell

12、关闭系统:
   shutdown -h now   关闭服务再关机
   init 0  直接关机 或: halt -p -f   或 poweroff 
      
13、重启:

   shutdown -r now
    init 6
    reboot

6-4 用户及组管理

1、useradd  添加用户    用户信息存放在以下文件: /etc/passwd

例: useradd oracle –g oinstall –G dba –d /home/oracle –p ora123
系统将创建一个用户 oracle,oracle用户的首要组为 oinstal,次要组为 dba。Home 目录为/home/oracle,密码为 ora123 。

      userdel  删除用户   彻底删除包括home下的目录文件:userdel -r ming
     usermod  更改用户属性
    如,把ming用户更改属性添加到多个组里:
   usermod -G root,bin,todd ming

  把多个用户加入到root组里:
 gpasswd -M ming,todd,ttt root

  用户密码文件:  vi /etc/shadow
  用户组密码文件 : vi /etc/gshadow 较少用
  用户组文件 : vi /etc/group
如:做一个用户迁移,把上述文件移动另一个系统

 注:加入root组并就是有root权限,uid为0才是root

2、修改以下文件也可以更改用户属性一般常用:
   vi /etc/login.defs

3、向控制台发出信息:

   write
   mesg
   wall  给所有登陆在本机用户发出信息
   last   查看登录日志
   lastlog 查看全部登录日志

6-5  linux系统文件的存储及权限

1、-代表普通文件,d 代表目录类型文件,l代表链接文件
      b c s p 管道文件   共7种文件

2、备份整个硬盘到一个加载u盘上:
    dd if=/dev/sda of=/mnt/a.img
    或者其中一个分区:dd if=/dev/sda1 of=/mnt/a.img

3、文件授权:
    644  二进制为: 110 100 100 即权限为:rw- r-- r--
   chmod 644 A
  如不用数字授权为:
  chmod ugo+x A   所有设置为都增加一个执行权限  u 代表拥有者,g代表拥有组,o代表其它
  chmod a-x A    同理减小一个X
  chmod a=rw A  都为rw权限

  chmod -R 777 /tmp/work   大写R参数表示把整个目录所有文件都设置为上述权限

4、修改文件的拥有者:
    chown ming a 把a文件的拥有者更改为ming用户
    如果加大写R参数跟chmod一样用法

5、改变文件的拥有组
    chgrp root a   用法跟上述一样,也可以带大写R参数

6、新建一个软链接:

   ln -s file1 file2    建立file1的软链接file2   ,如是硬连接则不加-s

4、linux下文件权限不叠加,如某用户对这个文件没有权限,但它所属的用户组有权限,最后权限是没权限,跟win不一样


7--- linux 文件夹及文件的权限

   1、文件夹权限:X为重要权限,如果没有x权限则不能cd进去。
     r权限对应为 ls查看执行
    x   cd
    rx  cd   ls
   wx  cd  touch  rm   vi (自己的,其它人的)
   wxt  cd  touch rm  vi(只可以修改自己的)

    注:文件夹W权限很重要,如果一个用户对此文件夹有写的权限,那么对文件夹里面的权限同样可写!  
  : wq!   强制修改保存退出

  /tmp  权限为1777    ,1为sticky  权限
   umask 
   关于不同用户创建文件或文件夹的权限:
    文件夹:777-umask
     文件:666-umask


8---linux 编译器及vim初步:

1、rhel5  把vi省去,需直接输入vim

2、u   撤销undo  ,ctrl+r   重做

3、"a3yy 复制      "ap  粘贴     自定义剪贴板 a,可以为b,c等,3代表复制3行。

4、:set nu  显示行数


9--文件查找与压缩:

1、which  查找可执行命令  如: which  ls  注:只可以查找命令

    echo $ PATH    输入路径为which查找的路径

2、whereis   跟which 相似

3、locate 查找东西比较快,且查找所有目录 ,查找前需更新db:updatedb

   ls ‘which locate’-l
   locate aaa.tar.gz
   locate -r '.*newfile.*'

cat  /etc/cron.daily/   计划任务里的内容

4、find  命令(比较慢):
   语法:find /etc -name newfile.txt
             find /etc -name "*newfile*"
  直接加文件名为在当前目录查找。

   find /etc -name "*network*" -exec ls { } \ ;   把查找出来的内容再执行ls命名
    find /etc -name "*network*" -ok rm { } \ ;   把查找出来的内容再执行ls命名,但需确认,exec不需交互。

     find /etc -等等  参数。

    find / -perm -777 -type d -ls     从根目录下开始查找所有权限为777的目录

5、grep  对指定文件内容进行查找(只查找文本文件):
  
    grep -R -l shrek /etc    查找所有带shark字母内容的文件关ls出来


6、压缩工具:

   gzip  压缩
    gunzip   解压缩

   bzip2    压缩 ,跟gzip差不多,但压缩比较高
   bunzip2 

7、tar  打包:
  
   tar cvf  /tmp/root.tar /etc/network   把network 打包到tmp下
    tar rvf  /tmp/root.tar /etc/network /etc/passwd
    tar xvf  /tmp/root.tar -C /tmp/dd/  解压到指定目录下xvf
    tar tvf  /tmp/root.tar   预解压文件tvf

  tar cvfz  /tmp/root.tar.gz /etc/network    打包后再压缩cvfz
   rvf不可以加z使用
  tar xvfz  /tmp/root.tar.gz -C /etc/network   解压解开到   xvfz

注释:c  创建新的档案文件
          r  把要存档的文件追加到档案文件后面
          t  列出档案文件的内容,查看已经备份了哪些文件
          u 更新文件
          x  从文档文件中释放文件
          v  详细报告
          f  使用档案文件或设备
  

8、history  查看历史命令


10--文本处理及正则表达式----

1、对文本文件操作命令:cat,more(只能往下),less

  head 显示文件的头部内容,默认显示前十行,参数-n 指明显示行数
  如;head -n 20 /etc/passwd 显示passwd的前20行。

  tail  显示文件结尾部分,用法与head一样。

注意:tail -f /var/log/message 实时监控日志文件更新信息,非常重要
-f 如果文件的大小在增长的话,tail 将跟随文件的增长而显示。

    sort -t : +2 -n  /etc/passwd  排序以:分隔 +2第三列,-n数字  (默认从大到小,加-r 即从小到大)
    sort -t : +2 -n  /etc/passwd  > /tmp/a  排序后并输出到a文件
 
    sort -t : +2 -n  /etc/passwd  | head -n 3 输出前3行

2、抓取文本中的一部分内容:
      cut -d: -f1 /etc/passwd    以:为分隔符抓取第1行

       cut -d: -f1 /etc/passwd | grep shrek  以:为分隔符抓取第一行,再取出带shrek的行
    
       cut -c1-3 /etc/passwd   取第一至三个字符下来

3、常见参数:
     grep -v -l -R -c -A2 -B2    -v不包含
     cut -d:  -f2-4   -c1-5 
     sort -n -r -t: +2

   注:grep执行时需加‘’号,如: grep 'ming' /etc/passwd

4、wc  统计文件的行,词,字数
   可以加以下参数: wc -l -w -c /etc/passwd

5、uniq  只显示不同的单词:

6、diff  两个文件作对比:

    diff a b

7、正则表达式:
     .  表示任意一个单一字符

     .* 表示任意多个单一字符

     ^a 表示以a为首的行

    a$  表示以a为尾的行
  
    \<good 表示以good开头的单词

   good\>  表示以good结尾的单词

    [abc] 表示当前位置 a、b或c

    [^abc] 表示除了a、b、c以外的字符

   a*  表示多个a

    a?  表示一个或单个单独的a

  a+   表示a、aa、及至更多个a

   a\{n\}   表示重复了n次的a


11---输入输出重定向及管道:

  1、标准重定向输出:>   ls /etc/passwd > /tmp/a 
       >号只输出正确的信息,如果 是错误信息则是 2>
      如:ls /etc/afdsafdaf   2> /tmp/a

    注:上述重定向都会把a文件清空后再写入。利用此可以对文件删除清空。
           &>  表示错误正确的消息都写入
           >>  追加到文件后面
           &>>表示正确错误都追加到文件后

cat /dve/cdrom > /tmp/a.iso    将光盘做成iso镜像 

2、两个<<
     cat << aaa    等待输入

    tr “a-z” “A-Z”< /etc/passwd     把passwd全部输出变成大写

      cat  > b.txt << DDD   当输入DDD时 中断退出

    ls /etc/  | wc -l    统计有多少文件示例

    ls /etc -l  | grep '^d' | wc -l   统计有多少个文件夹应用

3、 tee  复制


12----进程控制
 
1、hostname   主机名,注当更改完主机名时一定要更改相关IP:
    vi /etc/hosts   更改里面的相对应 IP地址,如window 里的hosts文件

2、free 查看内存使用情况

3、proc  内核的一个小窗户,里面的文件都是虚的

4、日志  /var/log        查看相关日志 message(系统日志) ,secure,(安全日志) wtmp(安全加密日志),maillog(邮件日志)

5、查看进程:top   或 ps   ,ps -aux 显示所有进程,-f 查看进程树

    终结进程:kill  -l   可以查看相关号,如:kill -9    ,kill -11

   直接结束进程:kill  4811   强制结束:kill -9 4811

  杀掉所有httpd进程:  killall httpd -9
  
   杀掉某个用户的进程: skill -9 ming  

   关于进程状态:s  代表睡觉,T代表暂停,R代表 运行 ,Z 僵持进程,D深度睡眠进程,<:高优先级进程,N:低优先级进程
   
6、关于优先级:

   -20 到19    最大优先级 为-20

  top里面使用 r 来修改优先级。

   nice -n -20 updatedb   以高的优先级执行命令
    renice -20 1  把进程1的优先级更改为-20

7、jobs  查看后台任务,bg %1  把后台第一个进程运行起来,fg %1把后台第一个进程转到前台并停止,kill %1  结束第一个进程。ctrl + z  停止一个任务并丢到后台。

   nohup updatedb &   在shell退出后,后台进程仍在执行,作为系统进程


----13 bash 使用详解:

set  查看所有的变量,env  查看全局环境变量

1、  vi ~/.bash_profile    设置bash命令

定义一个变量,取出其值
   AA=aaaaaaaa
   echo AA
上述为普通变量,只可以在相应的bash下使用,下面定义全局变量使用:

export AA=aaaaaa

2、history -c  删除全部历史纪录

   如果想每次退出时清除命令历史纪录:
 
  vi   .bash_logout   在上述文件中加入history -c

 调用命令历史:ctrl + r


3、关于bash的字符(注:跟正则表达式不一样):

  ! 表示执行等,~表示 主目录,( ) 声明一个函数如:a()

   "" 号只能把空号的意义的屏蔽,‘ ’把全部特殊符号屏蔽,`` 可以先执行``里面的命令,如:touch  `date + %y%m%d`log  (反引号是指~里下面的)

\  脱义符号  ,如touch  一个$的文件: touch \$  

;  可以连续执行两个命令: echo aaaa ; ls /etc -l

4、查看上述命令是否正常执行:echo $ ?  正常执行输出0。

5、两个&&号的使用:[   -f /etc/passwd   ]   &&  echo ok  如果前面为正确时执行后面的命令

6、两个||  号的使用 : [  -f /etc/passwdddd    ]  || echo ok   与上面命令相反,如果不正确时才执行。
(注:上述-f 代表查找文件,-d代表查找目录,-l 代表一个链接,-x代表是否可以执行,-r是否可以读,-w是否可写,-e  表示文件是否存在,-s  文件大小不为零)

同时需注意上述加空格代表判断,如:[  $USRE  =  root  ]  && echo it is root


7、定制bash

shell 脚本里一般初始化会执行以下几个参数配置文件:

     1、/etc/profile     针对所有用户的 ,公用 的
     2.   ~/.bash_profile  当前目录下的
     3.  ~/.bashrc         4.   /etc/bashrc  针对所有用户的


8、更改为中文界面

   查看当前系统语言:echo  $LANG

  vi ~/.bashrc   打开上述文件添加以下:
  export LANG="zh_CN.UTF-8"
  export LC_ALL ="zh_CN.UTF-8"

上述只针对当前用户,如更改整个系统的语言则更改以下:
vi /etc/sysconfig/i18n    添加以上即可


-----14.shell 脚本编程详解:

1、声明一个bshell 脚本以:#!/bin/sh

2、重设shell环境  :reset     ,man bash  录求帮助

3、在当前的shell里来执行:   .  ./backup


4、查看脚本的执行:bash -vx  ./b  可以查看脚本的一步步执行(调试使用), bash -v ./b  查看脚本的执行  


5、if 语法:
以下为一个bash 示例:

#!/bin/bash

read AA

if [  $AA = root ]  then echo 'hello root'
       elif  [  $AA = ming ]  then echo 'hello ming!!'
     else
              echo 'you are a bish!'
fi

6、case……in 语法:

#!/bin/bash

read AA

case $AA in
            ming)  echo 'hello ming, welcome to here!!'
              ;;
            root)  echo 'hello root ,i miss you so mush !!'
            ;;
        *) echo 'you are a bish ,get out here!!'
            ;;
esac


7、/etc/rc.d/init.d/   上述为系统初始化时的shell路径

8、file1  -nt  file2   文件file1 比文件file2更新
     file1  -ot   file2   文件file1比文件file2 更老

9、数值运算符比较:

相同  -eq  =
不同  -ne  !=
大于  -gt   >
小于  -lt   <
大于或等于  -ge
小于或等于  -le
为空  -z
不为空  -n

10、下述为kill 掉httpd的例子:

AA="`pgrep httpd`"

[  -z  "$AA"  ]  &&  echo 'httpd is not running !!'  && exit
for i in $AA
    do 
          kill -9 $i
    done
echo  'httpd has killed'

11、循环100次:

for   i  in `seq 1 100`

12、while 循环:

  AAA=0

while [ $AAA -lt  100 ]
      do
             AAA =$[$AAA+1 ]
             echo \ "$AAA"
    done
 
13、编写一个输入某个数循环:
    
14、sed  使用:

sed -n -e '/ming/p'   /etc/passwd  默认输出带ming的项 ,-e表示执行后面的命令,-n表示默认输出,p打印

sed -n -e '/\<ming\>/s/bash/nologin/p'  /etc/passwd   把bash替换成nologin ,s表示替换 。

sed -e 's/nologin/login/' /tmp/ddd/passwd   把所有nologin 替换成login

sed -n -e '/ming/s/bash/nologin/g' /tmp/passwd > /tmp/ddd/a 替换后并输出,g代表全部替换。

sed -e '/^\#/d' -e '/^$/d' /tmp/ddd/squid.conf  > /tmp/ddd/bb
删除以#开头以及为空的行, d代表删除

15、把 '' 里面的命令写成一个文件ss,然后再sed执行:
sed -f ss /tmp/ddd/passwd

16、软件安装:

   1、rpm -ivh   ....i386.rpm     安装某个rpm软件包,-i表示安装,v表示显示百分比,h显示过程。
   强制重新安装:rpm -ivh --force  ...i386.rpm
   强制安装:rpm -ivh --nodeps  ...i386.rpm     --nodeps 强制安装不管其它关联关系
   安装:rpm -ivh --aid  ...i386.rpm   --aid  解决一层关联关系,只有rhel4之前系统有。
   强制删除rpm:rpm -e --nodeps httpd                --nodeps是强制删除不管其它关联关系

2、rpm -q httpd 查看httpd安装的包
  
     rpm -qa   查看所有已经安装的包。
  
     rpm -qi       查看已经安装的包的详细信息

     rpm  -ql   查看包的安装路径

     rpm -qpi   a.rpm    查看未安装的包的信息


3、解压出来的原代码进行编译安装:

./configure   --prefix=/usr/local/httpd  --with-mpm=worker
 (指定安装在哪一个目录下面)

make 

make install


17------xwindow 图形界面

ctrl+alt + 退格    :关闭x-window界面

18------安全方面:

nmap -sS -O -P0  www.baidu.com
扫描端口

更改ssh端口: vi /etc/ssh/sshd_config
                    service sshd restart