跳到内容

文章类别:服务器

Cannot open /var/log/sa/sa**: No such file or directory

偶尔在主机上鼓捣sendmail的时候,发现rot用户有邮件,都是本地发的,有如下的错误内容:

Cannot open /var/log/sa/sa**: No such file or directory

**一般是当天的日期,每天都有很多,导致/var/spool/mail/root文件不断增大,虽然目前只有3M多,但以后时间久了谁知到呢。

解决方法其实很简单,看一下/var/log下面是不是有sa目录,没有的话建一个就行了:

mkdir /var/log/sa
chmod 755 /var/log/sa

这样就不会再给root发送错误提示邮件了,但是会在/var/log/sa下面生成二进制日志文件-_-!
不过这些都是“有价值”的日志了。

其实根本原因是有cron任务在收集系统日志,查看任务:

cat /etc/cron.d/sysstat

显示为:

# Run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib64/sa/sa1 1 1
# 0 * * * * root /usr/lib64/sa/sa1 600 6 &
# Generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib64/sa/sa2 -A

不想有错误通知邮件和“有价值”的日志,把内容清掉就行了。

CentOS配置本地DVD源配置Iometer测试环境

实际操作经常遇见没有网络的的情况,这时候安装软件就需要使用光盘了。

光盘挂载操作就不说了,

禁用yum网络更新,备份yum网络更新配置文件:

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

配置本地yum源:

vim /etc/yum.repos.d/CentOS-Media.repo

[c6-media]
name=CentOS-$releasever- Media
baseurl=file:///media/CentOS/
file:///media/cdrom/
file:///media/cdrecorder/
gpgcheck=1
enabled=0

修改为

[c6-media]
name=CentOS-$releasever- Media
baseurl=file:///media/CentOS_6.0_Final/
gpgcheck=1
enabled=1

其中baseurl修改为DVD的挂载目录,enabled=1开启本地更新模式。

清除原有的yum信息

yum clean all

检查DVD软件列表

yum list

然后运行Iometer的dynamo文件,在64系统里执行32位程序如果出现:

/lib/ld-linux.so.2: bad ELF interpreter: No such file or directory

安装下glic即可

yum install glibc.i686

然后又出现新的错误:

./dynamo: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

安装下c++库即可

yum install libstdc++.so.6

如果在运行yum命令时加了-y参数导致有个key没装上出现下面的错误:

yum install -y libstdc++.so.6
warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID c105b9de: NOKEY
Public key for libstdc++-4.4.4-13.el6.i686.rpm is not installed

在命令后加上–nogpgcheck参数即可:

yum install libstdc++.so.6 --nogpgcheck

如果出现下面的错误,确认运行iometer的windows机器和运行dynamo的linux机器是否可以互相ping通:

*** If dynamo and iometer hangs here, please make sure
*** you use a correct -m <manager_computer_name> that
*** can ping from iometer machine. use IP if need.

如果可以ping通就关闭linux防火墙:

service iptables stop

EOF

启动U盘制作工具:Rufus

总觉得DOS已经很遥远了,一直没有接触过,这次居然用上了,刷主板BIOS要在DOS下操作,

在网上找了一个可以制作DOS启动U盘的工具:Rufus

It can be especially useful for cases where:

you need to create USB installation media from bootable ISOs (Windows, Linux, UEFI, etc.)
you need to work on a system that doesn’t have an OS installed
you need to flash a BIOS or other firmware from DOS
you want to run a low-level utility

DOS命令这里就不粘贴了,网上多的是。

Windows在文件中寻找字符串命令findstr

在群里有网友问才想起来找的,类似grep,下面是官方帮助文档,也可以输命令显示:

findster /?

在文件中寻找字符串。

FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file]
[/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]]
strings [[drive:][path]filename[ …]]

/B 在一行的开始配对模式。
/E 在一行的结尾配对模式。
/L 按字使用搜索字符串。
/R 将搜索字符串作为一般表达式使用。
/S 在当前目录和所有子目录中搜索匹配文件。
/I 指定搜索不分大小写。
/X 打印完全匹配的行。
/V 只打印不包含匹配的行。
/N 在匹配的每行前打印行数。
/M 如果文件含有匹配项,只打印其文件名。
/O 在每个匹配行前打印字符偏移量。
/P 忽略有不可打印字符的文件。
/OFF[LINE] 不跳过带有脱机属性集的文件。
/A:attr 指定有十六进位数字的颜色属性。请见 “color /?”
/F:file 从指定文件读文件列表 (/ 代表控制台)。
/C:string 使用指定字符串作为文字搜索字符串。
/G:file 从指定的文件获得搜索字符串。 (/ 代表控制台)。
/D:dir 查找以分号为分隔符的目录列表
strings 要查找的文字。
[drive:][path]filename
指定要查找的文件。

除非参数有 /C 前缀,请使用空格隔开搜索字符串。
例如: ‘FINDSTR “hello there” x.y’ 在文件 x.y 中寻找 “hello” 或
“there”。’FINDSTR /C:”hello there” x.y’ 文件 x.y 寻找
“hello there”。

一般表达式的快速参考:
. 通配符: 任何字符
* 重复: 以前字符或类出现零或零以上次数
^ 行位置: 行的开始
$ 行位置: 行的终点
[class] 字符类: 任何在字符集中的字符
[^class] 补字符类: 任何不在字符集中的字符
[x-y] 范围: 在指定范围内的任何字符
\x Escape: 元字符 x 的文字用法
\<xyz 字位置: 字的开始
xyz\> 字位置: 字的结束

有关 FINDSTR 常见表达法的详细情况,请见联机命令参考。

自动备份网站文件和数据库

前几日博客挂了,为了保护数据,避免再挂了导致很久不能访问或者数据丢失,自己整一个数据备份.

1,将网站文件tar打包压缩.

2,将网站数据库用mysqldump备份.

3,然后用scp把文件和数据库传到另外的机器上,为实现scp免输秘密,制作一对密钥.

4,删除本机上的备份文件.

5,删除远程机器上的超过30天的备份.

6,输出备份完成时间

将以上六个步骤写成shell脚本,然后用crontab定期执行shell脚本.

首先制作密钥,为了方便,路径和短语全用默认设置,在发起scp的机器上,用要发起scp的用户执行:

ssh-keygen -t rsa

公钥被写入 ~/.ssh/id_rsa.pub,密钥被写入 ~/.ssh/id_rsa只有该用户能使用这对密钥.然后把公钥scp传到被连接的机器上,的家目录中的.ssh中:

scp 家目录.ssh/id_rsa.pub 接收用户@接收IP:家目录/.ssh/authorized_keys

然后用mysqldump备份数据库:

mysqldump -u用户 -p密码 数据库 > 目标文件

然后打包压缩网站文件:

tar -zcf 生成的文件 要备份的目录

然后把数据库和文件备份scp到别的机器上,这个时候因为有密钥,就不用输密码了,可以写在shell中执行.
定期执行shell:

crontab -e

内容如下:

# m h dom mon dow command
0 3 */2 * * /脚本目录/脚本 1>>/日志目录/日志文件 2>&1
#每两天3点执行一次,如果有输出,输出到指定文件

下面附上脚本代码:

#!/bin/bash

# 1,备份数据库
mysqldump -u用户 -p密码 数据库 > /目录/文件名-`date +%y%m%d`.sql

# 2,备份网站文件
tar -zPcf /目录/文件名-`date +%y%m%d`.tat.gz /目录

# 3,传到指定服务器上
scp /目录/文件名-`date +%y%m%d`.tat.gz 用户@IP:/目录
scp /目录/文件名-`date +%y%m%d`.sql 用户@IP:/目录

# 4,删掉本地临时文件
rm -rf /目录/*

# 5,远程删掉超过30天的文件
ssh 用户@IP "find /目录 -mtime +30 -exec rm -rf {} \;"

# 6,输出完成
echo "backup done at `date +%Y-%m-%d-%T`"