还是Crontab 的那些事 

继上次修复了crontab路径错误的问题后,我发现我的数据库备份文件夹下还是0个文件~

这到底是肿么了?

经过排查,我初步认为是我命令脚本里的"data +%s" 在作怪,因为有很多人说cron 里不支持 百分比"%" 这样的符号,需要进行转义(就像正则里一样~)。

所以,我的crontab 脚本变成了这样:

[[email protected] ~]# crontab -l
0 0 * * * root /usr/local/bin/mysqldump -A -C -u dumper | bzip2 -9 > /home/ftp/xzx/sql/mysql_`date +\%s`.sql.bz2

之后,为了方便调试,我把任务执行周期改为了一分钟一次。

果然,文件出现了~可是问题又来了,所有的数据包就是0字节。这是神马原因呢?

难道是因为权限不够?

我干脆用root身份去备份试试看~ 我把命令改成这样:

[[email protected] ~]# crontab -l
* * * * * root /usr/local/bin/mysqldump -A -C -uroot -pXXXXX | bzip2 -9 > /home/ftp/xzx/sql/mysql_`date +\%s`.sql.bz2

很遗憾,还是不行。依然0字节。

这个时候,我忽然觉得在命令前面加上root,重复去指定脚本执行用户可能是个错误。我删掉了root,当然也换回了默认备份数据库用户dumper,脚本如下:

[[email protected] ~]# crontab -l
* * * * * /usr/local/bin/mysqldump -A -C -u dumper | bzip2 -9 > /home/ftp/xzx/sql/mysql_`date +\%s`.sql.bz2

果然,这次成功了~见下:

[[email protected] ~]# ls /home/ftp/xzx/sql -lh
total 2.8M
-rw------- 1 root root 707K Aug 6 15:58 mysql_1312631881.sql.bz2
-rw------- 1 root root 707K Aug 6 15:59 mysql_1312631941.sql.bz2
-rw------- 1 root root 707K Aug 6 16:00 mysql_1312632001.sql.bz2
-rw------- 1 root root 707K Aug 6 16:01 mysql_1312632061.sql.bz2

恩,707Kb,这才是我想要的~

最终脚本如下,仅供参考:

[[email protected] ~]# crontab -l
0 0 * * * /usr/local/bin/mysqldump -A -C -u dumper | bzip2 -9 > /home/ftp/xzx/sql/mysql_`date +\%s`.sql.bz2

1 0 * * * chmod go-rwx /home/ftp/xzx/sql/*
[ ] ( 1565 次浏览 ) 永久链接 ( 3.1 / 2019 )
Crontab 不起作用原因之排查 

前段时间,由于对数据的重视程度的增加,我曾启用了crontab 以在每晚0点时对数据库进行整体备份。

今天,我无意中打开了存放数据库备份文件的目录,可是里面却什么也没有~这是怎么回事??

难道crontab 没有起作用?

难道是我的命令格式写错了?首先,我去查看了下crontab的格式,前面是时、分、月、日、周,后面是具体shell命令。我的如下:
[[email protected] ~]# crontab -l
0 0 * * * mysqldump -A -C -u dumper | bzip2 -9 > /home/ftp/xzx/sql/mysql_`date +%s`.sql.bz2

0 0 * * * chmod go-rwx /home/ftp/xzx/sql/*
应该说不存在问题。

难道是我的crontab 服务没有启动??不会吧~
[[email protected] ~]# ps -e | grep cron
20364 ? 00:00:00 crond

很显然,已经启动了~

那是尼玛神马问题呢?我以"crontab not work" 为关键字在谷歌上搜索了一下,得到了一些提示。

首先,看看位于/etc下的cron.deny文件里面,是不是有我的用户名 root.
我看了下,木有~ 该文件为空。

接着,我索性把/etc下所有crontab相关的配置文件都找了出来,

[[email protected] ~]# find /etc -name "cron*"
/etc/cron.d
/etc/cron.monthly
/etc/rc.d/init.d/crond
/etc/cron.daily
/etc/sysconfig/crond
/etc/pam.d/crond
/etc/cron.hourly
/etc/cron.deny
/etc/crontab
/etc/cron.weekly

看到cron.hourly/daily/weekly/monthly/ 我内牛满面~

当我打开 /etc/crontab 的时候,有一行配置惊醒了我,那就是 PATH 这行,原来crontab 默认不使用 /usr/local/bin 、/usr/local/sbin 这些作为PATH,

果断查看mysqldump 所在 :
[[email protected] ~]# which mysqldump
/usr/local/bin/mysqldump

囧rz.

原来这么多天,crontab一直在报 "command not found"....

修改后的crontab:

[[email protected] ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
MAILTO=root
HOME=/

# run-parts
#23 * * * * root run-parts /etc/cron.hourly
#50 0 * * * root run-parts /etc/cron.daily
#31 5 * * 0 root run-parts /etc/cron.weekly
#11 0 27 * * root run-parts /etc/cron.monthly


当然,还有种解决方案,就是写绝对路径~
[ ] ( 1372 次浏览 ) 永久链接 ( 2.9 / 1879 )
更换 AVD版本后测试Android 程序出现的错误 

最近在写一个小的Android程序的时候,由于之前是2.3的AVD,更换为2.2后,启动debug,AVD报错了~ 如下:


[2011-06-19 16:49:52 - HelloAndroid] Re-installation failed due to different application signatures.
[2011-06-19 16:49:52 - HelloAndroid] You must perform a full uninstall of the application. WARNING: This will remove the application data!
[2011-06-19 16:49:52 - HelloAndroid] Please execute 'adb uninstall org.xzx.helloandroid' in a shell.
[2011-06-19 16:49:52 - HelloAndroid] Launch canceled!


怎么都运行不了~看来得自己手动卸载,重装了~
得先找到 adb 的所在。

which adb,无果.查找一下,终于在 /usr/local/android-sdk-linux_x86/platform-tools/ 目录下找到了它,晕~这不是我安装android SDK 的地方么~

进入到 /usr/local/android-sdk-linux_x86/platform-tools/ 下,运行:
./adb uninstall xxx.xxx.xxx #具体为程序包名
即可。

再启动debug,一切OK了~

[2011-06-19 16:57:06 - HelloAndroid] Uploading HelloAndroid.apk onto device '040395381401C005'
[2011-06-19 16:57:06 - HelloAndroid] Installing HelloAndroid.apk...
[2011-06-19 16:57:13 - HelloAndroid] Success!

[ ] ( 1664 次浏览 ) 永久链接 ( 3 / 1702 )
给 Subclipse 安装 JavaHL 库 

eclipse 是我最爱的Java IDE之一,在eclipse 上使用svn的插件也是有很多~subclipse 便是其中之一.

不过最近我的eclipse一直在报一个缺少JavaHL的错误,每次打开都会弹出来一次,很是烦人。如图:


我检查了一下,我的eclipse 是使用的JavaHL的引擎,而我的系统里还没有安装,所以每次都会弹出来错误。

而我的eclipse里面还装有另外一个svn插件 - subversive,所以我每次提交代码也都成功了。不过,我得干掉这个恶心的错误了~

于是我便在 package.ubuntu.com 搜了一下,找到了解决方案.

sudo apt-get install libsvn-java
sudo apt-get install libsvn-javahl #不适用于 natty

完了之后,在重启下。JavaHL 就进入了系统的Path了~ eclipse 也就不会在找不到它了。

更多信息,参见:http://subclipse.tigris.org/wiki/JavaHL

注:你还可以下载里面提供的 javahltests.jar 文件,运行测试下JavaHL是否OK.
[ ] ( 2254 次浏览 ) 永久链接 ( 3 / 1864 )
Ubuntu 强制关机后的分区损坏之解决 

这几天天气太热,我的笔记本的温度一直是很高~一连开了一下午的机器,快傍晚的时候,忽然系统一下子死掉了,连tty也进不去了,一直提示什么"device /dev/sda6 error"之类的错误,无奈,长按电源键关机了~

可是再开机就杯具了~直接进initramfs了~我还以为是内核的问题,选择之前的内核问题依旧。

杯具了~选择进 memtest 模式也不行,不过我发现了"/dev/sda6 not be mount"的字样,估计是/dev/sda6 分区挂了。搜了一下,果然是分区表坏了~

解决方案:
找一张Ubuntu LiveCD,启动进系统。打开终端:
输入 sudo fsck -p /dev/sda6
即可。

注:修复之前要确保/dev/sda6 没有被挂载。(废话了~能正常挂载了,还需要修复么 囧rz)

一切完成后,如果幸运的话,/dev/sda6 已经可以被正常挂载了,里面的文件还在。

重启,退出LiveCD,系统又回来了~
[ ] ( 2806 次浏览 ) 永久链接 ( 3 / 1783 )

<< <上一页 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 下一页> >>