>覆盖>>追加
cat>newfile从键盘获得内容
Catfile1>file2把file1的内容复制到file2
>d2.out清空一个文件
/dev/null(存放垃圾),默认将错误信息显示再屏幕上
2>&1(将标准错误与标准输出关联到一起)
4、管道以|分隔
ls-l|grep“d”|wc-l统计目录文件的个数
5、()组合重定向,例(date;cal)>d.out
{}{date;cal;}>d.out
;分隔两条命令
\二级提示符
Unit9
1、变量:
系统环境变量大写;用户自定义变量小写
$引用变量、命令
$()、``命令替换
readonly只读类型,必须在定义时赋值
integer整型变量
export可继承变量
变量删除unset
2、Shell先解释,后命令自身解释
‘’忽略之间的所有特殊字符
“”忽略所有除了$,`,\
特殊符号$\取消掉其后一个字符的特殊含义`
执行顺序:
重定向命令和变量的替换通配符命令
Unit10
1、echo$$返回当前进程号
ps进程的序号和ID
-f还能看到程序的ppID
-e所有进程
-ef所有进程的详细属性
2、export将变量传递到子进程
3、运行文件(文件有x权限)
(1)文件名:
新建一个shell执行
(2).文件名:
在当前进程中执行
4、echo$?
:
返回最后一条命令执行的返回值
Unit11
1、Ps–T进程号查看进程下的所有子进程
Ps–e|more查看所有用户的所有进程
Ps–uroot查看root进程
2、进程+$后台运行
杀进程:
前台进程ctr+C、kill进程号
后台进程只能通过kill
+z暂停当前进程
nohup适用于运行时间长,需要在退出系统后仍能继续在后台运行
jobs查看后台进程状态
fg%序号:
把一个后台运行的程序提到前台执行
前台的程序先用ctrl+z暂停后,用bg%序号将程序放到后台运行
Unit12
1、/etc/environment(环境变量)root,只能定义变量
/etc/profile能执行文件root
$HOME/.profile用户
$HOME/.kshrc?
?
?
?
?
PATH=$PATH:
路径添加路径例:
PATH=$PATH:
/usr/java6_64/bin:
/usr/java6_64/bin
2、alias别名,别名的运行优先级高于系统命令=》unalias
3、$HOME/.sh_history保存最近的128条命令
fc–l查看最近命令
r执行前一个命令
Unit13
1、find目录属性属性值find.-namesum(查找当前目录文件下名字为sum的文件)
2、-exec将前面找到的文件按后面的命令处理find.-name'm*'-execls-l{}\;
-ok作用同-exec加提示
3、grep选项-v取反;-i忽略大小写;(-c只显示行数;-l显示匹配文件名;-n显示行号;-w全字匹配)
(egrep支持多条件过滤
fgrep只能过滤字符串,不支持正则表达式)
4、正则表达式中:
.任意一个字符;*任意多个前一字符;.*任何多个任意字符;^a以a开始;z$以z结尾;^$空行;()可以将括号内的内容放到缓存器中,通过\加数字调用;[^]取反
grep‘\([0-9]\)-\1’f1查找-前后数字相同的
grep‘\([0-9]\)\([0-9]\)-\2\1’f1查找-前后两个数字顺序相反的
5、sort
Sort+1按第二列排序
Sort+4.2按第5列第3个字符排列
-r反序
Sortfile–ofile将file排序后写回file
-u去重
$catanimals
dog.2
cat.4
elephant.10
rabbit.7
$sortanimalsDefaultsortorder
cat.4
dog.2
elephant.10
rabbit.7
$catanimals|sort+0.1Sortbysecondcharacter
rabbit.7
cat.4
elephant.10
dog.2
$catanimals|sort-t.-n+1
dog.2
cat.4
rabbit.7
elephant.10
-t:
Delimiter"."
-n:
Numericalorder
+1:
Secondfield
6、$head-5myfile取前5行
$tail-20file(取文件的倒数20行)
$tail+20file(取文件的第20行到最后一行)
7、tar
tar数据备份用-t不解包查看包的内容-x释放包中文件(不加文件名释放全部)
tar-cvfnew.tarf*压缩;-xvf释放
Unit14考的很少
Unit15考察最后一道编程题(15个得分点)
1、系统变量:
$$进程号;$0保存脚本运行的名称,不在脚本中则显示shell名称;$#显示所有参数的总数;$n(非0)返回第n个参数;
2、整型运算:
\*乘;/除;%求余;+-
()和*加\
非整型变量运算要通过expr(运算符号两边空格)或let(运行结果保存到变量里,相当于“(())”)
3、&&前一个命令执行成功后再执行后一个命令
||前一个命令执行失败则执行后一个命令
4、-eq、-lt、-le、-gt、-ge
判断字符串变量可直接用等号
-n字符串非空、-z字符串为空
5、if[[$#-eq1]]、if[$#-eq1]、iftest$#-eq1:
作用相同,推荐第一种
6、if和fi之间没有指令,加“;”
7、read:
键盘输入内容超过读入内容时,超出的内容给最后一个参数
仅输入read时内容保存在$REPLY中
8、循环:
会一种就可以,必考循环变量的设置
退出脚本:
continuebreakexit用法同C
作业1:
编写脚本在指定目录下创建文件
要求:
1.脚本只接收三个参数:
目标目录、文件名前缀、文件数量,例如:
$crtfiles/home/staXXX/testfile10
运行结果:
在/home/staXXX/test目录中生成file1、file2......file10等文件
2.判断目录的属性
1)若目录存在,应判断/home/staXXX/test目录是否有修改权限;如果没有修改权限应提示原因
2)若目录不存在,脚本应在/home/staXXX目录下自动创建test子目录;如果不能创建子目录应提示原因
3.判断文件名
1)文件名前缀不超过8个字符,且只能是字母;如果错误应提示原因
2)若文件已存在,不应再创建文件并对用户提示
4.文件数量应该是正整数;如果错误应提示原因
例如:
-10、0、3.14、0123、abc、1x2y等都是错误的
#!
/bin/ksh
#判断参数是否是三个
if[[$#-ne3]]
then
echo"argumentsnumberiswrong!
"
exit1
fi
dir=$1
#目录存在但没有写权限
if[[-d$dir&&!
-w$dir]];then;分隔命令
echo"directorynowritepermission!
"
exit2
fi
pdir=${dir%/*}%删去从右开始最小匹配的
#目录不存在且对父目录无写入权
if[[!
-d$dir&&!
-w$pdir]];then
echo"directorynotexistandparentdirectorynowritepermission!
"
exit3
fi
#目录不存在但对父目录有写入权
if[[!
-d$dir&&-w$pdir]];then
mkdir$dir
fi
prefix=$2
#文件名前缀超过8个字符
if[[${#prefix}-gt8]];then
echo"filenameprefixexceedseightcharacters"
exit4
fi
#文件名前缀不全是字母
if[[$name!
=+([a-zA-Z])]];then
echo"filenameprefixisnotallletters"
exit5
fi
num=$3
#第三个参数不是正整数
if[[$num!
=[1-9]*([0-9])]];then
echo"filenumberisnotinteger!
"
exit6
fi
#创建文件
i=1
while[[$i-le$num]]
do
filename=$dir/$name$i
if[[-e$filename]];then
echo"$filenameexist!
"
else
touch"$dir/$name$i"
echo"$filenamecreatsuccess!
"
fi
leti=i+1
done
mount查看文件中所有激活的分区
执行脚本的记录方式(不考)
if条件;then两个命令
如何把一个命令放到if语句后面……
Unit1不考
Unit2Smit:
高级命令
1、smit快捷键
F1(ESC-1)显示上下文帮助
F2(ESC-2)刷新
F3(ESC-3)注销,返回上一级菜单
F4(ESC-4)列表,给出可选的列表值
F5(ECS-5)初始化,恢复一个输入域的原始数据
F6(ESC-6)命令,显示要执行的Aix操作系统命令
F7(ESC-7)编辑,编辑一个下拉式菜单或下拉表中的一项
F8(ESC-8)镜像,将当前的屏幕存到一个文件中并将当前的快速路径显示出来
F9(ESC-9)外壳,启动一个子外壳
F10(ESC-10)退出,立即退出SMIT菜单
2、SMIT的日志文件在$HOME目录下,名为smit.log,它保存了所有被访问的菜单和对话框,还有所有被执行的命令和输出,以及运行过程中产生的错误。
smit.script文件则保存了SMIT执行的所有的Aix操作系统命令。
Unit3
1、启动模式:
正常模式、系统管理模式、维护模式、诊断模式(hardware出问题时)
启动流程:
0号进程是所有进程的主线程init
2、(Bootinfo-p查看当前系统的硬件平台
-y查看系统是32位还是64位
-K查看当前操作系统kernel(内核)
-r查看realmemory(以KB位单位))
3、alog查看启动日志
-o:
查看内容
-t=日志类型
4、inittab脚本文件解析
例:
init:
2:
initdefault:
(默认运行级别为2)
brc:
:
sysinit:
/sbin/rc.boot3>/dev/console2>&1#Phase3ofsystemboot
powerfail:
:
powerfail:
/etc/rc.powerfail2>&1|alog-tboot>/dev/console...
mkatmpvc:
2:
once(表示只能运行一次):
/usr/sbin/mkatmpvc>/dev/console2>&1
atmsvcd:
2:
once:
/usr/sbin/atmsvcd>/dev/console2>&1
load64bit:
2:
wait:
/etc/methods/cfg64>/dev/console2>&1#Enable64-bitexecs
tunables:
23456789:
wait:
/usr/sbin/tunrestore-R>/dev/console2>&1...
rc:
23456789:
wait:
/etc/rc2>&1|alog-tboot>/dev/console#Multi-Userchecks
fbcheck:
23456789:
wait:
/usr/sbin/fbcheck2>&1|alog-tboot>/dev/console...
srcmstr:
23456789:
respawn(对应进程被杀掉后仍会自动重新启动):
/usr/sbin/srcmstr#SystemResourceController
rctcpip:
23456789:
wait(表明所在行的记录如果执行不成功则会停止在这个位置等待,用在启动时必须启动的服务上):
/etc/rc.tcpip>/dev/console2>&1#StartTCP/IPdaemons
rcnfs:
23456789:
wait:
/etc/rc.nfs>/dev/console2>&1#StartNFSDaemons
cron:
23456789:
respawn:
/usr/sbin/cron
piobe:
2:
wait:
/usr/lib/lpd/pio/etc/pioinit>/dev/null2>&1#pbcleanup
qdaemon:
23456789:
wait:
/usr/bin/startsrc-sqdaemon
writesrv:
23456789:
wait:
/usr/bin/startsrc-swritesrv
uprintfd:
23456789:
respawn:
/usr/sbin/uprintfd
shdaemon:
2:
off:
/usr/sbin/shdaemon>/dev/console2>&1#Highavailabilitydaemon
l2:
2:
wait:
/etc/rc.d/rc2
l3:
3:
wait:
/etc/rc.d/rc3
l4:
4:
wait:
/etc/rc.d/rc4
5、lssrc获取子系统的状态
stasrcstopsrc
src=systemresourcecontrol
6、shutdown命令
shutdown“+”时间发送消息
7、checkpoint
Theinitialprocessisinit,whichchecks/etc/inittabforinformationregardingotherprocessesthathavetobestarted.
Unit7
1、5个术语:
物理设备、端口、设备驱动、逻辑设备、/dev目录(以B开头,块设备,带缓冲区;以C开头,流设备无缓冲区)
2、lsdev–P列出设备的有关信息
-H加上title
-c小类型的,设备类的
-C设备对象类的
-F以指定格式输出
3、设备状态:
available、defined(对于物理设备相当于禁用,对于逻辑设备正常)
4、lsattr-E显示特定设备的有效值
-D显示特定设备的默认值
-l指定设备名
5、cfgmgr:
通过指定程序来配置设备
更换硬盘的命令?
?
?
?
?
?
Unit8
1、物理分区:
硬盘;卷组;逻辑分区;物理块;逻辑块
一个物理卷必须属于一个卷组,一个卷组可以包含多个物理卷
同一个卷组的PPsize大小相同
逻辑分区和物理分区之间的关系
Lsvg–l(卷组)查看一个卷组的分区
Lspv–l(硬盘)查看一个硬盘的分区
分区可以跨磁盘
一个系统中可以有256个卷组
2、VGDA=卷组描述域
卷组被激活的前提是可用率大于51%
3、mount使文件系统可用
4、lsfs查看文件系统;lsvg查看卷组;lspv查看硬盘
5、判断逻辑卷是否含JFS,mountpoint不是N/A
Unit9
1、镜像:
提高可用性(发生故障后可继续使用的能力,每一份镜像放在不同的硬盘上)
striping:
牺牲可用性来换取performance
2、lsvg–p查看卷组的物理卷(rootvg信息解读);-o仅列出活动的卷组;-i从标准输入读入卷组名
lspv–p列出物理卷中每个物理分区的信息
3、卷组是创建分区的基本单位
4、hotspare判断
5、chvg-b设置卷组的坏块重新定位策略;-g检查卷组中的所有磁盘以查看其大小是否增加
checkpoint!
!
!
Unit10
1、lsfs
2、mount
3、lsps
文件系统必须创建在逻辑卷上,逻辑卷可以单独创建
逻辑卷的大小不会影响文件系统的大小
文件系统的增大,逻辑卷也会增大
正常删除文件系统的方法:
rmfs挂接点(前提:
文件系统是去活状态)
Rmlv分区(可以删除分区,但是、filesystem中有垃圾存在)
Unit11
1、df报告文件系统上的空间信息
2、du概述磁盘使用
3、defragfs整理碎片;fsck整理文件;check、分片不用掌握
Unit12
1、换页空间的原理
Lsps–a查看换页空间;–s查看总的换页空间
换页空间使用率过高,说明当前内存不足
Lsvg显示类型为paging即为换页空间
一个磁盘只有一个换页空间
删除一个换页空间,先去活(swapoff),rmps
chps更改