寻觅生命中的那一片浅草......

文章带标签 Linux

while read line的一些问题

while read line的一些问题

Q1. 曾经面试的时候被问到一个问题, 说
while read line ; do
echo $line ;
done < ./a.txt
失败, 会是什么原因, 当时觉得不太可能, 就回答了“我用的时候没有碰到过这种情况”。 前段在写一个脚本的时候, 确实遇到了所谓的while read 失败, 原因是我读入的文件是在win下用dos格式保存的文本, 所以每行结束都带有一个\r字符, 这个字符在linux/unix环境下的作用是“回到一行的开始”, 如果再对$line做相关的字符串操作的话(比如字符串连接), 得到的结果可能会让人迷惑… 所以当把win下编译的文本用在linux/unix环境时, 最好做一下格式转换

Q2. 2009-08-01更新:
# cat ur_file
1234 abcd
5678 efgh

# vi t3.sh
#!/bin/bash

while read t1 t2 ; do
echo $t1 $t2 ; awk ‘{ print $0 }’
done < ./ur_file

#./t3.sh
1234 abcd
5678 efgh

# sh -x ./t3.sh 发现只read 了一次

Q3.

# seq 10 > file
# while read line ; do
> echo $line
> dd &>/dev/null
> done < ./file
1

为什么这里只打印第一行呢?
问题的关键在于:
read从输入读取了一行内容后,
其它的程序(比如 rsh或sed)从同样的地方把其它的输入读走了,
read当然读不到其它内容了,
while也就结束了

摘自:http://bbs.chinaunix.net/viewthread.php?tid=769040&extra=&page=2

可以打开set -x, 看看, 确实只read了两次, 第一次read出第一行, 第二次read不到就退出while循环
read 和 dd都从文件描述符3中读取数据

php.ini里session.save_path引起的错误

Failed to initialize storage module: memcache (path: /tmp)

今天重启服务器后,登录页面出现以上的错误提示
最后发现是php.ini被修改了
;session.save_path = “/tmp”

由于所有的session都交给memcached处理了
所以session.save_path = “/tmp”应该要被注释掉
但不知道谁把它开起来了
session.save_path = “/tmp”

因为之前一直都没重启,所以一直都没有问题

rpmdb: Lock table is out of available locker entries

centos想用yum 更新软件的时候提示出错,怀疑是锁定了rpmdb
rpmdb: Lock table is out of available locker entries
错误如下:
rpmdb: Lock table is out of available locker entries
error: db4 error(22) from db->close: Invalid argument
error: cannot open Packages index using db3 – Cannot allocate memory (12)
error: cannot open Packages database in /var/lib/rpm
操作之前备份 /var/lib/rpm :
tar cvzf rpmdb-backup.tar.gz /var/lib/rpm
# du -sh rpmdb-backup.tar.gz
7.2M rpmdb-backup.tar.gz
或者
tar -cf rpm.tar /var/lib/rpm
# du -sh rpm.tar
22M rpm.tar
删除rpm使用的BDB数据库:
rm /var/lib/rpm/__db.00*
重建立 rpm 使用的数据库
rpm –rebuilddb
现在检查,看看 rpm 包是否一切正常:
rpm -qa | sub
yum install subversion

转载自:http://hi.baidu.com/suantop/blog/item/fe32141e588e631740341744.html

shell里非交互式修改用户密码

echo “newpasswd” | passwd user –stdin

install_xtrabackup-1.0_on_CentOS_5.4

wget http://www.percona.com/mysql/xtrabackup/1.0/source/xtrabackup-1.0-56.rhel5.src.rpm
mkdir -p /usr/src/redhat/SOURCES/
rpm -i xtrabackup-1.0-56.rhel5.src.rpm
cd /usr/src/redhat/SOURCES/
tar xf xtrabackup-1.0.tar.gz
cd xtrabackup-1.0
./configure
make
cd innobase/xtrabackup/
make
make install

/usr/bin/innobackupex-1.5.1 –help

2025年六月
« 5月    
 1
2345678
9101112131415
16171819202122
23242526272829
30