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 [email protected] 以什么用户远程登录
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