unix mounted df - hunix可执行文件是什么么意思

2015年四月
6789101112
13141516171819
20212223242526
linux企业应用
由 林夕昱 于
at 8:19 上午 发表
今天用老毛桃U盘启动盘安装ESXI5.iso系统,摸索了一阵,一项一项的试过之后,知道怎么安装了,呵呵。
制作好老毛桃U盘启动盘后,将VMware-ESXi-Installer-5.0.0-_64.iso复制到U盘里,这就算准备好了。
将U盘插到电脑上,并设置BIOS里的启动项为U盘HDD启动。
打开电源,选择第10项:启动自定义ISO/IMG文件(LMT目录);
回车,然后选择[17]列出目前所有可用设备;
回车,然后选择你的U盘(我是根据盘的容量大小确定哪个是U盘的);
回车,选择你要使用的.ISO文件;
回车,就开始安装了。
linux企业应用
由 林夕昱 于
at 2:10 下午 发表
存储的属性:存储的属性由容量和性能两个方面度量。
性能从三个方面测量;1带宽,2I/O次数,3延时
ESX支持的存储选项:1光纤,2光纤通道迁移到万兆以太网,3安装软件作使用iSCSI服务器。4NAS(NFS),5本地存储器,6无线带宽。
RAID:多块硬盘同时拷贝数据,提高速度(I/O),保护数据,不同的RAID技术有不同的性能。
RAID0:提高了速度,没有冗余,没有保护,任何一个硬盘出现问题,整个RAID组的数据全部丢失。
RAID1:强的数据保护,但是50%容量的消耗。不经济。
RAID5,6:强的数据保护,较小的容量消耗。有一个校验盘是raid5,有两个校验盘就是raid6,有自动替换能力。
iSCSI是一个标准,
iSCSI initiator:可以是软件或硬件的发起者,
iSCSI target:是一个逻辑目标
iSCSI Logical Unit:逻辑单元
iSCSI network portal:
iSCSI Qualified Name (IQN)
Static/dynamic discovery:动静态发现。
openfile的安装。下载地址http://jaist.dl.sourceforge.net/project/openfiler/openfiler-distribution-iso-2.99-x64/openfileresa-2.99.1-x86_64-disc1.iso
linux企业应用
由 林夕昱 于
at 2:00 下午 发表
vcenter添加32位的数据库,使用32位的odbc管理工具,32位的odbc管理工具的位置是;C:\Windows\SysWOW64&odbcad32.exe,然后添加一个VUM数据库。VUM数据库是在vcenter-db上创建的数据库。
安装VMware update manager,将VMware-VIMSetup-all-5.0.0-639890.iso添加到虚拟光驱,右键就可以看到VMware Update Manager,点击安装,默认点击下一步,在要求输入用户名和密码的界面,输入用户名administrator,和相应的密码;下一步,使用现有支持的数据库,这个数据库是上面准备的用32位的odbc管理工具创建的数据库,如果是64的数据库,这里你将看不到创建的VUM数据库。选择VUM数据库,下一步,输入sa的密码,下一步,知道安装完成。不过他会提示要120G的磁盘空间,这个无视即可。
安装完成后,在菜单栏,插件中的可用插件,可以看到刚才安装的update manager扩展。
linux企业应用
由 林夕昱 于
at 1:54 下午 发表
所有服务选用桥接模式 vmnet0
IP 192.168.1.51
netmask:255.255.255.0
getway:192.168.1.254
DNS的主DNS是 192.168.1.1,副DNS不用,HostName是:esxi5-,suffixes可以加一下前缀这里可以是
IP:192.168.1.52
netmask:255.255.255.0
getway:192.168.1.254
DNS的主DNS是 192.168.1.1,副DNS不用,HostName是:esxi5-,suffixes可以加一下前缀这里可以是
的IP地址是192.168.1.110,255.255.255.0,192.168.1.254
vcenter-的IP是192.168.1.111,255.255.255.0,192.168.1.254
的IP地址是192.168.1.254,255.255.255.0
DC域服务器:管理工具-&服务器管理器-&角色-&添加角色-&active directory域服务-&下一步,安装完成。
点击 active directory域服务 ,进入向导,在新林中新建域,,林功能级别 win2008 R2,下一步,到数据管理域的帐号。目录服务还原模式设置administrator的密码,下一步,直到安装完成,然后重新启动。
启动完成后,确认解析没有问题,cmd模式下执行nslookup,将ESXi5-1,ESXi5-2,,vcenter-添加到DC、
加入域;我的电脑,右键属性,计算机名更改,计算机名是vcenter,域:.加入域的帐号和密码要输入。
vcenter-加入域;我的电脑,右键属性,计算机名更改,计算机名是vcenter-db,域:.加入域的帐号和密码要输入。重启后,换成sqlserver2006 64位的光盘。切换用户,以myfreelinux\administrator登录到域。安装sqlserver2008。前面没有特别之处,在功能选择的时候,把所有的实例功能和共享功能全选,在服务器配置这一步,自动类型全部选为自动,用户名点击对所有sql server服务使用相同的帐户,点击浏览后输入administrator,点击检查名称,确定。返回上一个画面后显示的帐户名应该是myfreelinux\administrator,再输入密码,确定。在数据库引擎配置的帐户设置页面,选择混合模式;给sa设置密码,并添加当前用户,直到安装完成。
安装完成后,到 microsoft sql server 2008 R2下,选择sql server management studio来创建一个数据库,服务器名称是vcenter-db,身份验证是sql server身份验证,用户名sa,密码输入,连接进取后,创建一个数据库,vc51。
再到到 microsoft sql server 2008 R2的配置工具下,点击sql server 配置管理器,在sql server服务里,有一个是手动启动的模式,可以到管理工具的服务下,设置这个项目,在服务里,将sql相关的,手动的全部设定为自动,在登录选项卡,浏览页面,位置选择为整个目录,用户为administator,返回上个页面,输入相关密码,重新启动该服务。还有一个sql server browser,双击,在登录页面,将查找位置改为整个目录,用户是administrator,并设置密码。再到上面提到的sql server 配置管理器里,可以看到所有启动模式都是自动,登陆身份为myfreelinux\administrator。
在数据里,右键vcenter-db,选择方面选项,在出现的页面中,方面选外围应用配置器,方面属性的remotedacenabled 选true。
管理工具,选择高级安全 windows防火墙,入站规则,选择右侧的新建规则,自定义,下一步,到IP地址相关页面,添加192.168.1.0/24,其他全部安默认,名称为allallow-in,这样,其他机器,就可以ping vcenter-db了。
上安装sql client,安装文件是sqlncli,在2052_CHS_LP\x64\setup\x64目录下。然后到管理工具-〉数据源,系统DSN,添加-〉sql server native client 10.0,下一步,名称描述都是vc51,服务器vcenter-db,下一步,登录ID是sa,密码输入一下。下一步,更改默认的数据库为vc51,下一步,将日志文件和他下面的一项都选上。完成,可以测试一下数据库是否链接成功。
下面安装vcenter server,文件是vmware-vimsetup-all-5.00-*.iso。右键光盘,安装virtualcenter的那个就行了。数据源名称那一步,选择vc51,帐户名称:myfreelinux\administrator,输入相关密码,完整限定域名,其他默认安装完成即可。
配置DNS,管理工具-〉DNS-〉正向查找区域,将ESXi5-1,ESXi5-2添加到DNS。
linux企业应用
由 林夕昱 于
at 12:03 下午 发表
转载备用/article/mysql-performance-optimization-of-optimization-parameters-configuration-to-improve-service-performance.html
在Linux下安装Mysql采用默认配置安装的Mysql却未必是工作在最佳性能状态的,需要对其进行优化。今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。一般认为在MySQL的配置文件中,配置参数是比较关键的。
1)interactive_timeout :
服务器在关闭它前在一个交互连接上等待行动的秒数。一个交互的客户被定义为对 mysql_real_connect()使用 CLIENT_INTERACTIVE 选项的客户。 默认数值是28800,我把它改为7200。
2)back_log :
要求 MySQL 能有的连接数量。当主要MySQL线程在一个很短时间内得到非常多的连接请求,这个参数就会起作用,然后主线程花些时间(尽管很短)检查连接并且启动一个新线程。
back_log 值指出在MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中。
只有如果期望在一个短时间内有很多连接,你需要增加它,换句话说,这值对到来的TCP/IP连接的侦听队列的大小。每个操作系统在这个队列大小上都有它自己的限制。
试图设定back_log高于操作系统的限制将是无效的。
在mysql中back_log的设置取决于操作系统
在linux下这个参数的值不能大于系统参数tcp_max_syn_backlog的值
通过以下命令可以查看tcp_max_syn_backlog的当前值
/proc/sys/net/ipv4/tcp_max_syn_backlog
通过以下命令进行修改sysctl -w net.ipv4.tcp_max_syn_backlog=n
深入探讨一点
tcp/ip网络一般会有如下过程
从生成socket到bind端口在listen进而建立连接
具体到listen,就是listen(int fd, int backlog)的调用,这里backlog和mysql中back_log具有一定的关系,即操作系统backlog的要不小于mysql中back_log的值,在linux内核2.6.6中backlog在/include/net/tcp.h中由TCP_SYNQ_HSIZE变量定义
观察一下主机进程列表,如果发现大量 264084 | unauthenticated user | xxx.xxx.xxx.xxx | NULL | Connect | NULL | login | NULL 的待连接进程时,就有必要加大 back_log 的值了。默认数值是50,我把它改为500。3)3)3)max_connections :
允许的同时客户的数量。增加该值增加 mysqld 要求的文件描述符的数量。这个数字应该增加,否则,你将经常看到 Too many connections 错误。 默认数值是100,我把它改为1024 。
4)key_buffer_size :
索引块是缓冲的并且被所有的线程共享。key_buffer_size是用于索引块的缓冲区大小,增加它可得到更好处理的索引(对所有读和多重写),到你能负担得起那样多。
如果你使它太大,系统将开始换页并且真的变慢了。默认数值是M),我的MySQL主机有2GB内存,所以我把它改为 0MB)。
是否要增加这个参数的值主要看以下两点:
1、Key_reads/Key_read_requests:比例应该接近于0.01甚至越小越好
2、Key_writes/Key_write_requests:比例接近1较好
解决的办法当然是增加key_buffer_size的值啦,来实在的到控制台下面运行:
SET GLOBAL key_buffer_size=;
这是设置全局的,如果只是当前会话的话,将GLOBAL换成SESSION即可。
5)record_buffer :
每个进行一个顺序扫描的线程为其扫描的每张表分配这个大小的一个缓冲区。如果你做很多顺序扫描,你可能想要增加该值。默认数值是K),我把它改为M)
6)sort_buffer :
每个需要进行排序的线程分配该大小的一个缓冲区。增加这值加速ORDER BY或GROUP BY操作。默认数值是M),我把它改为 M)。
7)table_cache :
为所有线程打开表的数量。增加该值能增加mysqld要求的文件描述符的数量。MySQL对每个唯一打开的表需要2个文件描述符。默认数值是64,我把它改为512。
8)thread_cache_size :
可以复用的保存在中的线程的数量。如果有,新的线程从缓存中取得,当断开连接的时候如果有空间,客户的线置在缓存中。
如果有很多新的线程,为了提高性能可 以这个变量值。通过比较 Connections 和 Threads_created 状态的变量,可以看到这个变量的作用。我把它设置为 80。
9)wait_timeout :
服务器在关闭它之前在一个连接上等待行动的秒数。 默认数值是28800,我把它改为7200。
注:参数的调整可以通过修改 /f 文件并重启 MySQL 实现。很明显的,根据服务器的硬件配置的不同,和mysql数据库负载的不同,参数的设置也是不同的。
所以大家不要照搬上面的参数,而是要根据不同的硬件和负载修改为最适合自己的参数。
linux/unix基础知识
由 林夕昱 于
at 12:39 下午 发表
linux下sed是个流文本编辑器,它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出或使用sed -i参数进行保存。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等.
下面介绍linux下sed命令几个经典用法
1. 去掉空行
sed ‘/^$/d’
2. 在shell中,用某个变量(参数)替换文本中的指定字符串,如果在sed中引用变量,必须用双引号“哦。否则变量不生效
如用$myarg变量替换
myarg=”test arg”
echo “linux site:”
| sed “/$myarg/g”
linux site:http://www.test arg
3. 删除(去掉)每行末尾的最后一个字符,行末尾的任意一个字符都会被删除哦,常用场景构造mysql多行insert值的sql语句
sed ‘s/.$//’
4.替换字符(含有/特殊符号的),这里命令中的斜杠/可以用其他符号代替,如用#号
如把/用@替换
echo “/”
| sed ‘s#/#@#g’
如果一定要用/斜杠的话,命令必须把要替换的斜杠先转义
echo “/” | sed ‘s/\//@/g’
5. 在行首或者行尾增加字符串
如在行首增加
echo “mychar”
| sed ‘s/^//g’
在行尾增加
echo “mychar”
| sed ‘s/$//g’
6.删除第N行:
‘Nd’ filename
删除第M到N行:
‘M,Nd’ filename
7.删除匹配内容所在的行
sed /PATTERN/d filename
8.匹配内容后增加某内容
在匹配内容后增加这一行内容
sed ‘//’ youfile
在匹配内容前增加这一行内容
sed ‘//’ youfile
9.匹配字符串,然后在匹配的行之下插入多行文本(即插入一个文件),该文本预先写入某个文件
在yourfile匹配内容后增加forbag.txt这个文件
sed -i ‘/ r forbag.txt’
由 林夕昱 于
at 9:27 上午 发表
在xp系统下能正常运行的程序,到win7 64位系统下老是报错:win7(64)未在本地计算机上注册 Microsoft.Jet.OLEDB.4.0 提供程序
在网上找到了两个方法:
解决方法之一:
编译项目指定目标平台为x86就完了,不能用any cpu
生成-&配置管理器-&平台-&点击Any Cpu选项卡-&新建-&新建平台-&X86
上面这个方法在我没有找不到,在我的环境里对应的路径是:
项目-&属性-&编译-&高级编译选项-&目标CPU-&x86,也就是将目标CPU选项选择为x86,我的程序就能跑了。
解决方法之二是:
在对应的 IIS 应用程序池中,“设置应用程序池默认属性”/“常规”/”启用32位应用程序”,设置为 true。
linux企业应用
由 林夕昱 于
at 2:25 下午 发表
磁盘容量使用情况的脚本经过一段时间的使用后,再次做出了修改。
两个shell文件名也作了修改。分别为diskInfoChuri.sh和getDiskInfo.sh,这样名字更加符合shell的功能。
在diskInfoChuri.sh脚本中,对信息处理的共通部分进行了提取,作为一个共通函数。
输出的信息也稍有变化。
getDiskInfo.sh脚本的处理方法没有改变,还是以前的样子,只是脚本名字改了下,更能描述脚本的功能。
以下是两个脚本的内容:
diskInfoChuri.sh#!/bin/bash
#!/bin/bash
#!/usr/bin/expect -f
#打出开始时间
TODAY_DATE=`date ‘+%Y%m%d’`
user1=”oracle”
user2=”svnroot”
password1=”oracle”
password2=”svnroot”
host1=192.168.1.102
host2=192.168.1.101
hostName1=”oracle服务器”
hostName1=”SVN服务器”
#取得工作目录
WORK_PATH=”$(cd $(dirname $0);pwd)”
#WORK_PATH=”$(dirname $WORK_PATH)”
LOG_FILE=”${WORK_PATH}/diskInfo_${TODAY_DATE}.log”
LOG_FILE_CHURI=”${WORK_PATH}/diskInfo_CHURI.log”
TMP_FILE1=”${WORK_PATH}/tmp1.log”
TMP_FILE2=”${WORK_PATH}/tmp2.log”
-e ${LOG_FILE} ]; then
rm ${LOG_FILE}
#1:如果磁盘的容量有大于80%的,将服务器的名字写到mail.log中
#2:已经写进去了,就不再写了
serverLog=1
printServerLog=1
#下面的sed ‘s/\r/\n/g’是将dos格式的回车换成unix格式的换行,如果没有这个处理,就会报错。
#有时候Filesystem的长度&20时,本应该在一行的信息,显示到了两行,所以awk要做特殊处理.
cat ${1} | egrep -v “^$|spawn|apl|Filesystem” |sed ‘s/\r/\n/g’|awk ‘{if(NF==1){str=$1;}else if(NF==5){print str” “$0;} else if(NF==6){print $0}}’&${2}
while read LINE
PERC=`echo $LINE | awk ‘{print $5}’| sed ‘s:%::g’`
[[ “$?” !=  ]] ; then
echo “在文件${4}中存在错误,请核实” |tee -a ${3}
FILE=`echo $LINE | awk ‘{print $6}’`
[[ “$?” !=  ]] ; then
echo “在文件${4}中存在错误,请核实” |tee -a ${3}
LENGTH=`echo $LINE | awk ‘{print length($1)}’`
if [[ “${5}” ==  ]] || [[ “${5}” ==  ]]; then
if [[ “${PERC}” -ge 80 ]]; then
if [[ “$printServerLog” -eq 1 ]]; then
echo “${4}” && ${3}
echo “Filesystem
Used Avail Use% Mounted on”&& ${3}
printServerLog=2
#这里之所以判断这个长度,使因为有时候Filesystem的长度&20时,本应该在一行的信息,显示到了两行,所以要做特殊处理.
if [[ “${LENGTH}” -gt  ]];then
echo “$LINE” |awk ‘{print $1}’&& ${3}
echo “$LINE” |awk ‘{print ”
“$6}’&& ${3}
echo “$LINE” && ${3}
expect getDiskInfo.sh $user1 $host1 $password1 & ${TMP_FILE1}
echo ${hostName1}
cat ${TMP_FILE1}
cat ${TMP_FILE1} & ${LOG_FILE}
#churi ${TMP_FILE1} ${TMP_FILE2} ${LOG_FILE_CHURI} ${hostName1} 1
#第2台主机名称
expect getDiskInfo.sh $user2 $host2 $password2 & ${TMP_FILE1}
echo ${hostName2}
cat ${TMP_FILE1} |tee -a
${LOG_FILE}
churi ${TMP_FILE1} ${TMP_FILE2} ${LOG_FILE_CHURI} ${hostName2} 2
if [[ -f ${LOG_FILE_CHURI} ]]; then
echo “硬盘检查有不合格的”
echo “不合格信息如下”
echo “=======================================================================”
cat ${LOG_FILE_CHURI}
echo “=======================================================================”
echo “”
rm ${LOG_FILE_CHURI}
echo “硬盘检查OK”
echo “请再目视检查一遍”
echo “”
echo “shell脚本处理完成”
echo “”
rm ${TMP_FILE1}
rm ${TMP_FILE2}
getDiskInfo.sh脚本的内容如下:#!/usr/bin/expect -f
#!/bin/bash
set timeout 2
set user [lindex $argv 0]
set host [lindex $argv 1]
set password [lindex $argv 2]
spawn /usr/bin/ssh $user@$host “df -h”
password: {
send “$password\r”
exp_continue
} incorrect {
send_user “invalid password or account\n”
} timeout {
send_user “connection to $host timed out\n”
send_user “\n”
send “sleep 120\r\n”
使用上面的代码时,要将双引号和单引号换成英文的双引号和单引号,否则拷贝下来直接使用会报错.
linux企业应用
由 林夕昱 于
at 1:47 下午 发表
这是一个使用脚本更新数据库的一个例子.运行环境是bash shell,shell的第一个参数是go,第二个参数是sql文件的一个列表.
第一个参数实际上没有什么意义,但是它最好还是存在,它存在的目的是:不知道这个shell执行效果的人万一要运行这个脚本,在不添加go参数的时候是不会执行的.从而保证数据库的安全.第二个参数是一个文件列表,格式如下:
tablename1,table1_sql.txt
tablename2,table2_sql.txt
tablename是用来更新的表的名字,table2_sql.txt得文件的内容是一些插入,更新,删除的sql语句。
具体的shell如下:
#! /bin/sh
#下面是一个环境设定
TS_SYSTEM_DATE=`date ‘+%m%d%H%M%S’`
TS_ZHIXING_DATE=`date ‘+%Y%m%d’`
ORA_USR=${userid}/${password}@${instance}
TS_LOG_PATH=${LOG_DIR}/setup
if test -d ${TS_LOG_PATH}
TS_RCODE=0
mkdir -m 777 ${TS_LOG_PATH}
TS_DBBACKUP_PATH=${DBBACKUP_DIR}/${TS_ZHIXING_DATE}_DBBACKUP
if test -d ${TS_DBBACKUP_PATH}
TS_RCODE=0
mkdir -m 777 -p ${TS_DBBACKUP_PATH}
linux企业应用
由 林夕昱 于
at 1:44 下午 发表
数据库每天都要备份,为了防止硬盘被备份文件撑死,年前把硬盘清扫了一遍.
年后第一天上班,特意看了下磁盘容量,发现没有任何变化,估计出问题了..
赶紧查看问题出现在哪里.数据库备份文件已经产生并打包,但是专门保存备份文件的磁盘上没有,说明在传文件的时候出了问题.
看了下shell脚本,脚本文件在开始的时候先产生一个xxx.lock文件.后面根据这个lock文件到存在与否进行相应的处理.
正常处理结束后,要把这个文件删除掉.但是在异常的情况下,这个文件就没有删除.正好在日出现了问题,这个lock文件就没有删除掉,所以在以后,shell判断这个文件存在,就直接退出了.
备份的数据文件就没有传到专用备份服务器上.
手动删除这个lock文件,看一下第二天的情况,呵呵文件传过来了.
看来还是shell的逻辑错误导致备份文件没有传过来.
linux企业应用
由 林夕昱 于
at 2:46 下午 发表
今天又重新写了一个交互式登陆服务器,检查磁盘使用的脚本.
这次查看服务器磁盘使用情况的脚本根据参数登陆服务器,而不是在脚本中指定服务器.
具体脚本内容如下:
这个是调用df2.sh脚本和分析磁盘使用情况的脚本.
#!/bin/bash
#打出开始时间
user1=”oracle”
user2=”svnroot”
password1=”oracle”
password2=”svnroot”
host1=192.168.1.102
host2=192.168.1.101
-e mail.log ]; then
rm mail.log
#1:如果磁盘的容量有大于80%的,将服务器的名字写到mail.log中
#2:已经写进去了,就不再写了
serverLog=1
expect df2.sh $user1 $host1 $password1 & df.log
cat df.log | egrep -v “^$|spawn|oracle|svnroot|Filesystem”| awk ‘{NF1=NF-1;if(NF&4) print $NF1″ “$NF}’| sed ‘s:%::g’ &dftmp.log
dos2unix dftmp.log #必须执行dos2unix的转换,否则会出问题,不能将正确的信息添加到mail.log
while read LINE
PREC=`echo $LINE | awk ‘{print $1}’`
FILESYSTEM=`echo $LINE | awk ‘{print $2}’`
if [ $PREC -gt 10 ]; then
if [ $serverLog -eq  ]; then
serverLog=2
echo “oracle 服务器的磁盘的使用率有大于80%的,请检查” &&mail.log
echo “${FILESYSTEM}” IS USED MORE THAN ${PREC}% , PLEASE CHECK!!!! &&mail.log
done&dftmp.log
serverLog=1
expect df2.sh $user2 $host2 $password2 & df.log
cat df.log | egrep -v “^$|spawn|oracle|svnroot|Filesystem”| awk ‘{NF1=NF-1;if(NF&4) print $NF1″ “$NF}’| sed ‘s:%::g’ &dftmp.log
dos2unix dftmp.log
while read LINE
PREC=`echo $LINE | awk ‘{print $1}’`
FILESYSTEM=`echo $LINE | awk ‘{print $2}’`
if [ $PREC -gt 10 ]; then
if [ $serverLog -eq  ]; then
serverLog=2
echo “svnServer 服务器的磁盘的使用率有大于80%的,请检查” &&mail.log
echo “${FILESYSTEM}” IS USED MORE THAN ${PREC}% , PLEASE CHECK!!!! &&mail.log
done&dftmp.log
rm dftmp.log
cat mail.log
#打出执行结束的时间
df2.sh脚本的内容如下:
#!/usr/bin/expect -f
#!/bin/bash
set timeout 2
set user [lindex $argv 0]
set host [lindex $argv 1]
set password [lindex $argv 2]
spawn /usr/bin/ssh $user@$host “df -h”
password: {
expect password:
send “$password\r”
exp_continue
} incorrect {
send_user “invalid password or account\n”
} timeout {
send_user “connection to $host timed out\n”
send_user “\n”
send “sleep 120\r\n”
执行结果如下:
[oracle@oracle11g tmp]$ ./callDf.sh
Sat Jan 26 22:40:56 CST 2013
dos2unix: converting file dftmp.log to UNIX format …
dos2unix: converting file dftmp.log to UNIX format …
oracle 服务器的磁盘的使用率有大于80%的,请检查
/ IS USED MORE THAN 75% , PLEASE CHECK!!!!
/boot IS USED MORE THAN 12% , PLEASE CHECK!!!!
svnServer 服务器的磁盘的使用率有大于80%的,请检查
/ IS USED MORE THAN 37% , PLEASE CHECK!!!!
/usr IS USED MORE THAN 24% , PLEASE CHECK!!!!
/boot IS USED MORE THAN 14% , PLEASE CHECK!!!!
Sat Jan 26 22:41:05 CST 2013
linux企业应用
由 林夕昱 于
at 1:23 下午 发表
这几天要写一个登陆到几个服务器查看硬盘情况的脚本,憋了好几天,网上的一些脚本也不好用,今天终于实现了。
下面是登陆到其他服务器查看硬盘的脚本内容(对硬盘使用情况的分析还没有写)。
[oracle@oracle11g tmp]$ cat df.sh
#!/usr/bin/expect -f
set timeout 2
set user1 “oracle”
set user2 “svnroot”
set password1 “oracle”
set password2 “svnroot”
set host1 192.168.1.102
set host2 192.168.1.101
spawn /usr/bin/ssh $user1@$host1 “df -h”
password: {
expect password:
#send_user “\n”
send “$password1\r”
exp_continue
} incorrect {
send_user “invalid password or account\n”
} timeout {
send_user “connection to $host1 timed out\n”
send_user “\n”
spawn /usr/bin/ssh $user2@$host2 “df -h”
password: {
#stty -echo
#send_user “password (for $user) on $host: ”
#expect_user -re “(.*)\n”
expect password:
#send_user “\n”
send “$password2\r”
#stty echo
exp_continue
} incorrect {
send_user “invalid password or account\n”
} timeout {
send_user “connection to $host2 timed out\n”
send_user “\n”
send “sleep 120\r\n”
再写一个小脚本调用df.sh
[oracle@oracle11g tmp]$ cat callDf.sh
#!/bin/bash
expect df.sh & df.log
#注意,调用df.sh要用expect
得到的磁盘使用信息如下:
[oracle@oracle11g tmp]$ cat df.log
spawn /usr/bin/ssh oracle@192.168.1.102 df -h
oracle@192.168.1.102’s password:
Filesystem
Used Avail Use% Mounted on
0% /dev/shm
spawn /usr/bin/ssh svnroot@192.168.1.101 df -h
svnroot@192.168.1.101’s password:
Filesystem
Used Avail Use% Mounted on
0% /dev/shm
1% /var/lib/xenstored
linux/unix基础知识
由 林夕昱 于
at 12:37 下午 发表
当Linux计算机受到入侵时,常见的情况是日志文件被删除,以掩盖攻击者的踪迹。管理错误也可能导致意外删除重要的文件,比如在清理旧日志时,意外地删除了数据库的活动事务日志。有时可以通过lsof来恢复这些文件。
当进程打开了某个文件时,只要该进程保持
打开该文件,即使将其删除,它依然存在于磁盘中。这意味着,进程并不知道文件已经被删除,它仍然可以向打开该文件时提供给它的文件描述符进行读取和写入。除了该进程之外,这个文件是不可见的,因为已经删除了其相应的目录索引节点。
在/proc 目录下,其中包含了反映内核和进程树的各种文件。/proc目录挂载的是在内存中所映射的一块区域,所以这些文件和目录并不存在于磁盘中,因此当我们对这些文件进行读取和写入时,实际上是在从内存中获取相关信息。大多数与lsof 相关的信息都存储于以进程的PID 命名的目录中,即/proc/1234 中包含的是PID 为1234 的进程的信息。每个进程目录中存在着各种文件,它们可以使得应用程序简单地了解进程的内存空间、文件描述符列表、指向磁盘上的文件的符号链接和其他系统信息。lsof 程序使用该信息和其他关于内核内部状态的信息来产生其输出。所以lsof 可以显示进程的文件描述符和相关的文件名等信息。也就是我们通过访问进程的文件描述符可以找到该文件的相关信息。
当系统中的某个文件被意外地删除了,只要这个时候系统中还有进程正在访问该文件,那么我们就可以通过lsof从/proc目录下恢复该文件的内容。 假如由于误操作将/var/log/messages文件删除掉了,那么这时要将/var/log/messages文件恢复的方法如下:
首先使用lsof来查看当前是否有进程打开/var/logmessages文件,如下:
[root@station90 yum.repos.d]# lsof | grep /var/log/messages
330592 /var/log/messages (deleted)
从上面的信息可以看到PID 2699(syslogd)打开文件的文件描述符为 1。同时还可以看到/var/log/messages已经标记被删除了。因此我们可以在/proc/2699/fd/1 (fd下的每个以数字命名的文件表示进程对应的文件描述符)中查看相应的信息,如下:
[root@station90 fd]# pwd
/proc/2699/fd
[root@station90 fd]# cat 1 | head -n 5
Jan 13 08:59:02 station90 syslogd 1.4.1: restart.
Jan 13 10:44:22 station90 syslogd 1.4.1: restart.
Jan 13 10:44:22 station90 kernel: klogd 1.4.1, log source = /proc/kmsg started.
Jan 13 10:44:22 station90 kernel: Linux version 2.6.18-164.el5 (mockbuild@x86-003.build.) (gcc version 4.1.2
(Red Hat 4.1.2-46)) #1 SMP Tue Aug 18 15:51:48 EDT 2009
Jan 13 10:44:22 station90 kernel: Command line: ro root=LABEL=/ rhgb quiet从上面的信息可以看出,查看/proc/2699/fd/1 就可以得到所要恢复的数据。如果可以通过文件描述符查看相应的数据,那么就可以使用 I/O 重定向将其复制到文件中,如:
cat /proc/2699/fd/1 & /var/log/messages
在恢复之前,及时touch了/var/log/messages文件也是没有问题的
对于许多应用程序,尤其是日志文件和数据库,这种恢复删除文件的方法非常有用。
由 林夕昱 于
at 2:12 下午 发表
sqlldr的参数有以下[oracle@oracle11g niudu]$ sqlldr
SQL*Loader: Release 11.1.0.6.0 – Production on Mon Dec 3 21:45:35 2012
Copyright (c) , Oracle.
All rights reserved.
Usage: SQLLDR keyword=value [,keyword=value,…]
Valid Keywords:
userid — ORACLE username/password
control — control file name
log — log file name
bad — bad file name
data — data file name
discard — discard file name
discardmax — number of discards to allow
(Default all)
skip — number of logical records to skip
(Default 0)
load — number of logical records to load
(Default all)
errors — number of errors to allow
(Default 50)
rows — number of rows in conventional path bind array or between direct path data saves
(Default: Conventional path 64, Direct path all)
bindsize — size of conventional path bind array in bytes
(Default 256000)
silent — suppress messages during run (header,feedback,errors,discards,partitions)
direct — use direct path
(Default FALSE)
parfile — parameter file: name of file that contains parameter specifications
parallel — do parallel load
(Default FALSE)
file — file to allocate extents from
skip_unusable_indexes — disallow/allow unusable indexes or index partitions
(Default FALSE)
skip_index_maintenance — do not maintain indexes, mark affected indexes as unusable
(Default FALSE)
commit_discontinued — commit loaded rows when load is discontinued
(Default FALSE)
readsize — size of read buffer
(Default 1048576)
external_table — use ext NOT_USED, GENERATE_ONLY, EXECUTE
(Default NOT_USED)
columnarrayrows — number of rows for direct path column array
(Default 5000)
streamsize — size of direct path stream buffer in bytes
(Default 256000)
multithreading — use multithreading in direct path
resumable — enable or disable resumable for current session
(Default FALSE)
resumable_name — text string to help identify resumable statement
resumable_timeout — wait time (in seconds) for RESUMABLE
(Default 7200)
date_cache — size (in entries) of date conversion cache
(Default 1000)
在windows下编辑一个txt文本,用来记录:用户名,密码,和邮箱,上传到linux后,需要转换格式,执行下面命令
[oracle@oracle11g niudu]$ dos2unix niudu.txt
如果不转换,使用awk命令转换的时候,会出现错误.
[oracle@oracle11g niudu]$ head niudu.dat
“,&#″,””
&#990″,&#990@668.num”,&#671,比如这行,最后少了一个双引号.
[oracle@oracle11g niudu]$ awk ‘{printf(“%c%s%s%s%s%s%s\n”,”\””,$1,”\”,\””,$2,”\”,\””,$3,”\””);}’ niudu.txt & niudu.dat
这里awk主要是给三个字段加上双引号和逗号.
编写控制文件如下:
[oracle@oracle11g niudu]$ cat niudu.ctl
INFILE “/home/oracle/table/niudu/niudu.dat”
INTO TABLE NIUDU
#字段之间以逗号分隔,字符串以半角双引号包围
FIELDS TERMINATED BY “,” optionally enclosed by ‘”‘
(USERNAME,PASSWORD,EMAIL)
[oracle@oracle11g niudu]$ cat niudu.sh
sqlplus -s u1/bbk123@wilson && sql_end
truncate table niudu
SQL_ERR=err.log
SQL_SUCCESS=success.log
rm -f ${SQL_ERR}
rm -f ${SQL_SUCCESS}
#sqlldr命令解释: 用户名/密码@实例名 control=控制文件(a.ctl放在.bat同目录下) log=a.log (日志文件同目录下)
bad=a.bad(脏数据报错的数据放bad中)
direct=Y (按正确的顺序导入) error=99999(导入遇到报错error加一,如果大于这个数量则退出sqlldr 命令 默认50条记录)
sqlldr u1/bbk123@wilson control=”/home/oracle/table/niudu/niudu.ctl” log=${SQL_SUCCESS} bad=${SQL_ERR} direct=y
errors=999999
[oracle@oracle11g niudu]$ ll
-rw-r–r– 1 oracle oinstall 150 Dec
2 21:47 niudu.ctl
-rw-r–r– 1 oracle oinstall 36M Dec
3 21:04 niudu.txt
-rw-r–r– 1 oracle oinstall 42M Dec
3 21:07 niudu.dat
-rwxr–r– 1 oracle oinstall 620 Dec
3 21:55 niudu.sh
要有执行权限
[oracle@oracle11g niudu]$ ./niudu.sh 将niudu.dat的数据插入数据库表niudu中.
SQL& select count(*)
———-
SQL& select username,password,email from niudu where rownum & 8;
————– ——————– —————
wwe6739697
hunnkunn.num hi
7 rows selected.
由 林夕昱 于
at 1:14 下午 发表
由 林夕昱 于
at 1:44 下午 发表
在这里做一个实验就一些模拟数据导入oracle数据库,有效数据只有三列,用户名,密码,和邮箱.
模拟数据的内容如下:
[oracle@oracle11g niudu]$ head niudu.txt
LhuZhlnn #
# chennminn_
myzhu # 780968 #
huwulm # 7080768 #
nhknjl # KIN98kk6! #
nlzyky # y67890 #
Minhhll # hvvll #
yinlj # lj7707 # .cn
jiniuhuhn # 67890 #
Lil # hliliikh #
首先要判断模拟数据中每个字段的长度,可以使用下面的脚本来统计各字段的长度:
[oracle@oracle11g niudu]$ cat ../shl/getColLength.awk
#!/bin/awk
FS=” “;
print(“username==passwrod===email”);
if(length($1)&para1)
para1=length($1);
if(length($3)&para2)
para2=length($3);
if(length($5)&para3)
para3=length($5);
printf(“%s%d%s%d%s%d\n”,”
“,para1,”
“,para2,”
“,para3);
printf(“%s%d\n”,”There are lines:
“, NR);
运行结构如下:
[oracle@oracle11g niudu]$ awk -f ../shl/getColLength.awk niudu.txt
username==passwrod===email
There are lines:6428632
要将模拟数据导入到oracle数据库,还有将模拟文件的格式进行转换一下,要转换成的格式如下:
“str1″,”str2″,”str3″
数据转换也用脚本处理:
[oracle@oracle11g niudu]$ cat ../shl/niudu_convert.awk
#!/bin/awk
/bin/bash date
FS=” ”
if($0 !~ “\”” && $1 != “”)
if($3 == “” )
{ $3=&#″;}
if($5 == “” )
$5=””;
printf(“%c%s%s%s%s%s%s\n”,”\””,$1,”\”,\””,$3,”\”,\””,$5,”\””);
使用上面脚本转换前,还不能忘记下面的操作,因为我是在windows上准备的数据,所以到了linux上还应该转换一下格式,否则在转换的时候就会出错,
[oracle@oracle11g niudu]$ dos2unix niudu.txt
dos2unix: converting file niudu.txt to UNIX format …
接下来就可以将模拟数据转换成oracle能处理的数据了.
[oracle@oracle11g niudu]$ awk -f ../shl/niudu_convert.awk niudu.txt &niudu.dat
[oracle@oracle11g niudu]$ ll
total 549M
-rwxr-xr-x 1 oracle oinstall
215 Nov 18 14:56 niudu.sh
-rwxr-xr-x 1 oracle oinstall
144 Nov 18 14:56 niudu.ctl
-rw-r–r– 1 oracle oinstall 268M Nov 18 20:14 niudu.txt
-rw-r–r– 1 oracle oinstall 281M Nov 18 20:45 niudu.dat
[oracle@oracle11g niudu]$ wc -l niudu.txt
6428632 niudu.txt
[oracle@oracle11g niudu]$ wc -l niudu.dat
6428475 niudu.dat
可以看到转换后的数据要比转换前的少157行,看一下转换就本就可以知道,这些数据给过滤掉了.但是有一些原始数据没有密码和邮箱,反而转换后的数据文件更大了.
转换后的数据是下面的样子:
[oracle@oracle11g niudu]$ head niudu.dat
“zkn”,&#6″,””
“LhuZhlnn”,,”chennminn_”
“myzhu”,&#″,””
“huwulm”,&#″,””
“nhknjl”,”KIN98kk6!”,””
“nlzyky”,&#″,””
“Minhhll”,”hvvll”,””
“yinlj”,”lj;,”.cn”
“jiniuhuhn”,&#″,””
“Lil”,”hliliikh”,””
根据上面统计的各个列的长度,创建下表:
create table niudu(
USERNAME nvarchar2(40) not null,
PASSWORD nvarchar2(50) not null,
EMAIL nvarchar2(60) not null,
UPD_DATE date,
UPD_SID char(20),
UPD_PGMID char(16)
) pctfree 10
我们只向其中插入前三列,后面的不插入数据了.
然后创建下面的shell和控制文件:
[oracle@oracle11g niudu]$ cat niudu.sh
sqlplus -s u1/bbk123@wilson && sql_end
truncate table niudu
SQL_ERR=err.log
SQL_SUCCESS=success.log
rm -f ${SQL_ERR}
rm -f ${SQL_SUCCESS}
sqlldr u1/bbk123@wilson control=”/tmp/table/niudu/niudu.ctl”
[oracle@oracle11g niudu]$ cat niudu.ctl
INFILE “/tmp/table/niudu/niudu.dat”
#这个数据文件就是转换后的文件
INTO TABLE NIUDU
FIELDS TERMINATED BY “,” optionally enclosed by ‘”‘
(USERNAME,PASSWORD,EMAIL)
[oracle@oracle11g niudu]$ ./niudu.sh
运行脚本,就可以插入数据了,
Commit point reached – logical record count 6428444
Commit point reached – logical record count 6428475
可以查询确认一下:
SQL& select count(*)
———-
再将数据导出:
[oracle@oracle11g niudu]$ ../shl/DB_Backup.sh
[oracle@oracle11g _release]$ ll
total 537M
-rw-r–r– 1 oracle oinstall 536M Nov 18 21:33 niudu.dmp
-rw-r–r– 1 oracle oinstall
671 Nov 18 21:33 LogName_.log
[oracle@oracle11g _release]$ cat LogName_.log
Sun Nov 18 21:32:16 CST 2012
Export: Release 11.1.0.6.0 – Production on Sun Nov 18 21:32:17 2012
Copyright (c) , Oracle.
All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 – Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Export done in US7ASCII character set and AL16UTF16 NCHAR character set
server uses AL32UTF8 character set (possible charset conversion)
About to export specified tables via Conventional Path …
. . exporting table
6428475 rows exported
Export terminated successfully without warnings.
Sun Nov 18 21:33:12 CST 2012
只用1分钟左右,数据就导出完毕了.
由 林夕昱 于
at 2:02 下午 发表
这几天帮邻居下载电视剧,个数不少,电视剧名字因为包含下载网站的网址,所以比较长,一个一个改名字有些费劲,所以写了一个小批处理文件:
内容如下:
getname.bat
rem @echo off
rem #===========================================
set CUR_DIR=.
SET NAME=NAME.txt
SET RENAME=rename.bat
del %NAME%
del %RENAME%
dir /B %CUR_DIR%\*风和日丽*.rmvb & %NAME%
for /f %%i in (%NAME%) do (
echo rename %%i .rmvb&& %RENAME%
del %NAME%
echo 电视剧名字选择完了………
echo 按任意键结束
上面的批处理文件产生重命名的批处理文件rename.bat,但是这个文件还不完美,还需要手工改动一下,运行getname.bat后产生rename.bat的内容如下:
rename [迅雷下载www.2tu.cc]风和日丽01.rmvb .rmvb
rename [迅雷下载www.2tu.cc]风和日丽02.rmvb .rmvb
rename [迅雷下载www.2tu.cc]风和日丽03.rmvb .rmvb
rename [迅雷下载www.2tu.cc]风和日丽04.rmvb .rmvb
rename [迅雷下载www.2tu.cc]风和日丽05.rmvb .rmvb
rename [迅雷下载www.2tu.cc]风和日丽06.rmvb .rmvb
rename [迅雷下载www.2tu.cc]风和日丽07.rmvb .rmvb
在EditPlus里,按住ALT键,从上往下选择[风和日丽01~风和日丽07],然后粘贴在后面[.rmvb]前,如下
rename [迅雷下载www.2tu.cc]风和日丽01.rmvb 风和日丽01.rmvb
rename [迅雷下载www.2tu.cc]风和日丽02.rmvb 风和日丽02.rmvb
rename [迅雷下载www.2tu.cc]风和日丽03.rmvb 风和日丽03.rmvb
rename [迅雷下载www.2tu.cc]风和日丽04.rmvb 风和日丽04.rmvb
rename [迅雷下载www.2tu.cc]风和日丽05.rmvb 风和日丽05.rmvb
rename [迅雷下载www.2tu.cc]风和日丽06.rmvb 风和日丽06.rmvb
rename [迅雷下载www.2tu.cc]风和日丽07.rmvb 风和日丽07.rmvb
rename [迅雷下载www.2tu.cc]风和日丽08.rmvb 风和日丽08.rmvb
然后保存。
运行rename.bat,就可以将电视剧名字批量修改了。
linux/unix基础知识
由 林夕昱 于
at 1:58 下午 发表
scp的使用1例:
[root@oracle11g lxy]# ll
total 1803092
-rw-r–r– 1 lxy lxy
28074 Sep 23 11:26 foshuo.txt
-rw-r–r– 1 lxy lxy
Aug 13 18:58 linux_11gR1_database_1013.zip
[root@oracle11g lxy]# su – lxy
[lxy@oracle11g ~]$ scp -rp
lxy@192.168.1.102:/home/lxy/linux_11gR1_database_1013.zip lwj@192.168.1.102:/home/lwj
The authenticity of host &#.1.102 (192.168.1.102)’ can’t be established.
RSA key fingerprint is 50:ca:98:f1:2f:81:56:39:e1:c5:fd:3b:bf:0a:b1:41.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added &#.1.102’ (RSA) to the list of known hosts.
lxy@192.168.1.102’s password:输入lxy的密码
lwj@192.168.1.102’s password:输入lwj的密码
linux_11gR1_database_1013.zip
linux_11gR1_database_1013.zip
62% 1096MB
linux_11gR1_database_1013.zip
100% 1759MB
Connection to 192.168.1.102 closed.
由 林夕昱 于
at 8:48 上午 发表
SQL& conn lxy/lxy
SP2-0618: Cannot find the Session Identifier.
Check PLUSTRACE role is enabled
SP2-0611: Error enabling STATISTICS report
SQL& cgra
grant plustrace to lxy
ERROR at line 1:
ORA-01919: role ‘PLUSTRACE’ does not exist 角色不存在
SQL& @/u01/oracle/sqlplus/admin/plustrce.sql
运行这个sql
Grant succeeded. 这样分配就可以了
SQL& conn lxy/lxy
Connected.
SQL& set autot on stat
SQL& select count(*)
———-
Statistics
———————————————————-
recursive calls
db block gets
consistent gets
physical reads
bytes sent via SQL*Net to client
bytes received via SQL*Net from client
SQL*Net roundtrips to/from client
sorts (memory)
sorts (disk)
rows processed
由 林夕昱 于
at 8:04 上午 发表
SQL& create user lxy identified by lxy defa
User created.
SQL& grant create session,alter session,create table,create view,
create synonym,create cluster,create database link,create sequence,
create trigger,create type,create procedure,cr
Grant succeeded.
SQL& conn lxy/lxy
Connected.
SQL& create table m(id integer,name char(10));
create table m(id integer,name char(10))
ERROR at line 1:
ORA-01950: no privileges on tablespace ‘USERS’
上面错误的解决方法是在创建用户分配权限后,执行下面的语句:
SQL& alter user lxy quota 10M
此句执行后,就解决问题了.
User altered.
SQL& conn lxy/lxy
Connected.
SQL& create table m(id integer,name char(10));
Table created.
- 96,567 查看 - 39,939 查看 - 37,356 查看 - 26,780 查看 - 26,616 查看 - 21,613 查看 - 17,913 查看 - 16,583 查看 - 15,660 查看 - 15,121 查看 - 15,116 查看 - 14,560 查看 - 14,020 查看 - 13,821 查看 - 13,763 查看 - 13,454 查看 - 13,254 查看 - 13,158 查看 - 12,779 查看 - 12,718 查看 - 12,669 查看 - 12,108 查看 - 12,063 查看 - 11,906 查看 - 11,806 查看 - 11,790 查看 - 11,679 查看 - 11,644 查看 - 11,413 查看 - 11,009 查看
最近更新文章

我要回帖

更多关于 unix df 的文章

 

随机推荐