灌溉梦想,记录脚步

Drupal的计划任务设定(Drupal CRON TASKS)

  Drupal的很多功能都是依赖CRON TASKS来完成的,比如搜索的索引,还有Cache的清理,所以CRON对于Drupal来说是很重要的。今天终于把我的Cron tasks搞定了,下面说说我的经历。我是自己的服务器,虚拟主机一半是不能自己设定Cron tasks的,但有一些网站免费提供这个功能。对于drupal来说,只要定时访问根目录下面的cron.php文件,然后就会自动执行一连串的任务,所以我们要做就是定时访问一下这个文件。我的服务器装的是CentOS 4.5系统,所以下面我先说说linux(unix和freebsd也通用)下面的Cron。
  Cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:
  /sbin/service crond start //启动服务/sbin/service crond stop //关闭服务/sbin/service crond restart //重启服务/sbin/service crond reload //重新载入配置
  你也可以将这个服务在系统启动的时候自动启动:
  在/etc/rc.d/rc.local这个脚本的末尾加上:/sbin/service crond start
  现在Cron这个服务已经在进程里面了,我们就可以用这个服务了,Cron服务提供以下几种接口供大家使用:
  1.直接用crontab命令编辑
  cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:
  crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
  crontab -l //列出某个用户cron服务的详细内容
  crontab -r //删除没个用户的cron服务
  crontab -e //编辑某个用户的cron服务
  比如说root查看自己的cron设置:crontab -u root -l
  再例如,root想删除fred的cron设置:crontab -u fred -r
  在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab -u root -e
  进入vi编辑模式,编辑的内容一定要符合下面的格式:*/1 * * * * ls >> /tmp/ls.txt
  这个格式的前一部分是对时间的设定,后面一部分是要执行的命令,如果要执行的命令太多,可以把这些命令写到一个脚本里面,然后在这里直接调用这个脚本就可以了,调用的时候记得写出命令的完整路径。时间的设定我们有一定的约定,前面五个*号代表五个数字,数字的取值范围和含义如下:
  分钟 (0-59)
  小時 (0-23)
  日期 (1-31)
  月份 (1-12)
  星期 (0-6)//0代表星期天
  除了数字还有几个个特殊的符号就是”*”、”/”和”-“、”,”,*代表所有的取值范围内的数字,”/”代表每的意思,”*/5″表示每5个单位,”-“代表从某个数字到某个数字,”,”分开几个离散的数字。以下举几个例子说明问题:
  每天早上6点
  0 6 * * * echo “Good morning.” >> /tmp/test.txt //注意单纯echo,从屏幕上看不到任何输出,因为cron把任何输出都email到root的信箱了。
  每两个小时
  0 */2 * * * echo “Have a break now.” >> /tmp/test.txt
  晚上11点到早上8点之间每两个小时,早上八点
  0 23-7/2,8 * * * echo “Have a good dream:)” >> /tmp/test.txt
  每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
  0 11 4 * 1-3 command line
  1月1日早上4点
  0 4 1 1 * command line
  每次编辑完某个用户的cron设置后,cron自动在/var/spool/cron下生成一个与此用户同名的文件,此用户的cron信息都记录在这个文件中,这个文件是不可以直接编辑的,只可以用crontab -e 来编辑。cron启动后每过一份钟读一次这个文件,检查是否要执行里面的命令。因此此文件修改后不需要重新启动cron服务。
  2.编辑/etc/crontab 文件配置cron
  cron 服务每分钟不仅要读一次/var/spool/cron内的所有文件,还需要读一次/etc/crontab,因此我们配置这个文件也能运用cron服务做一些事情。用crontab配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务。此文件的文件格式是:
  SHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号HOME=/ //使用者运行的路径,这里是根目录# run-parts01 * * * * root run-parts /etc/cron.hourly //每小时执行/etc/cron.hourly内的脚本02 4 * * * root run-parts /etc/cron.daily //每天执行/etc/cron.daily内的脚本22 4 * * 0 root run-parts /etc/cron.weekly //每星期执行/etc/cron.weekly内的脚本42 4 1 * * root run-parts /etc/cron.monthly //每月去执行/etc/cron.monthly内的脚
  大家注意”run-parts”这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名了。
  到目前为止大家应该知道怎么设Cron task了,下面我们就把Drupal的Cron加进去。
  1、在控制台输入 crontab -r username -e,其中username就是你的用户名,如果就为当前用户设定cron task,也可以不用-r username参数;
  2、输入0 * * * * wget -O – -q -t 1 http://www.yoururl.com/cron.php,表示每小时运行一次。也可以将第一个”*”后面加上/2,/3,/4等表示每2,3,4小时运行一次,或者第二个”*”后面加上/1,/2,/3表示每1,2,3天运行一次。
  3、”Shift键+z”键保存并退出,然后运行”/sbin/service crond restart”。
  好了,到此为止,linux下面的Cron task就设定好了。
  Windows主机可以通过设定计划任务,执行的任务也是访问那个网址或者用下载那个文件。

网站宕机监控服务介绍

  网站最重要的就是稳定性,如果网站因为宕机而无法访问,那么对于网站本身来说是一场灾难,网站管理员最重要的职责就是在服务器宕机后第一时间进行恢复,防止网站长时间宕机造成更多损失,因此,网站管理员需要一个对其网站进行24小时不间断的监视的服务,一旦出现无法访问的情况,就立刻通过邮件和短消息通知管理员。
  这里我介绍一些常用的免费网站宕机监控服务。
  SiteUpTime(www.siteuptime.com
  免费用户可以监控一个网站,每半小时监测一次,可监测4个端口,提供4台监测服务器供用户选择,网站不能访问的时候会发送Email通知你。SiteUptime还为免费用户提供统计报告、每月报告邮件等实用服务。
  Site 24×7(site24×7.com)
  免费用户可以每60分钟检测最多2个网站的情况。可以获得邮件或者短信的告警以及报告。新注册用户可以享受15天全功能使用,之后会自动切换为免费帐户。值得注意的是,这个网站提供中文界面,不懂英文的推荐使用这个网站。
  WebPerform(www.webperform.cn
  中文版的网站监测服务,免费用户可以每60分钟监测最多两个网站。
  HostTracker(host-tracker.com)
  免费用户每30分钟监控两个网站。
  网站保姆(http://bm.chinaz.com/
  中国站长站推出的监控服务器在线状态的服务,免费用户可在30分钟监测一个服务器,邮件通知,收费用户有短信通知。
  本文来自: E点废墟(www.xok.la) 详细出处参考:http://xok.la/2009/06/site_jiankong.html

FreeBSD安装vim

  1.vim6的安装:
  cd /usr/ports/editors/vim6+ruby
  make -DWITHOUT_X11 install clean
  mv /usr/bin/vi /usr/bin/vi.bak
  cp /usr/local/bin/vim /usr/bin/vi

  2. 配置:
  Copy Vim 的配置文件 .vimrc 到使用者根目录,并且加入中文环境设定。
  cp /usr/local/share/vim/vim72/vimrc_example.vim /usr/local/share/vim/vimrc
  cp /usr/local/share/vim/vim72/vimrc_example.vim ~/.vimrc

  3. vim中文的cshrc配置:
  .cshrc里加入以下内容:
  setenv LC_ALL zh_CN.EUC
  setenv LANG zh_CN.EUC
  setenv LC_CTYPE zh_CN.EUC

登陆freebsd出现Using keyboard-interactive authentication

  putty下用root登陆freebsd出现Using keyboard-interactive authentication的解决

  终端中运行vi /etc/ssh/sshd_config
  把里面的
  #PermitRootLogin no
  #PasswordAuthentication no
  改为
  PermitRootLogin yes
  PasswordAuthentication yes
  保存后重启ssh

  /etc/rc.d/sshd restart
  再登陆就不报错了

使用mysqldump备份与恢复数据库实例

  备份MySQL数据库的命令
  mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql
  备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库。
  mysqldump –add-drop-table -uusername -ppassword databasename > backupfile.sql
  直接将MySQL数据库压缩备份
  mysqldump -hhostname -uusername -ppassword databasename | gzip > backupfile.sql.gz
  备份MySQL数据库某个(些)表
  mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > backupfile.sql
  同时备份多个MySQL数据库
  mysqldump -hhostname -uusername -ppassword -databases databasename1 databasename2 databasename3 > multibackupfile.sql
  仅仅备份数据库结构
  mysqldump -no-data -databases databasename1 databasename2 databasename3 > structurebackupfile.sql
  备份服务器上所有数据库
  mysqldump -all-databases > allbackupfile.sql
  还原MySQL数据库的命令
  mysql -hhostname -uusername -ppassword databasename < backupfile.sql
  还原压缩的MySQL数据库
  gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename
  将数据库转移到新服务器
  mysqldump -uusername -ppassword databasename | mysql -host=*.*.*.* -C databasename

Crontab实现定时任务

  Crontab是一个很方便的在unix/linux系统上定时(循环)执行某个任务的程序
  使用cron服务,用 service crond status 查看 cron服务状态,如果没有启动则 service crond start启动它,
  cron服务是一个定时执行的服务,可以通过crontab 命令添加或者编辑需要定时执行的任务:
  crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
  crontab -l //列出某个用户cron服务的详细内容
  crontab -r //删除没个用户的cron服务
  crontab -e //编辑某个用户的cron服务
  比如说root查看自己的cron设置:crontab -u root -l 再例如,root想删除fred的cron设置:crontab -u fred -r 在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab -u root -e 进入vi编辑模式,编辑的内容一定要符合下面的格式:*/1 * * * * ls >> /tmp/ls.txt 编辑/etc/crontab文件,在末尾加上一行: 30 5 * * * root init 6 这样就将系统配置为了每天早上5点30自动重新启动。
  需要将crond设置为系统启动后自动启动的服务,可以在/etc/rc.d/rc.local 中,在末尾加上
  service crond start 如果还需要在系统启动十加载其他服务,可以继续加上其他服务的启动命令。
  比如: service mysqld start 基本用法: 1. crontab -l 列出当前的crontab任务
  2. crontab -d 删除当前的crontab任务
  3. crontab -e (solaris5.8上面是 crontab -r) 编辑一个crontab任务,ctrl_D结束
  4. crontab filename 以filename做为crontab的任务列表文件并载入
  crontab file的格式: crontab 文件中的行由 6 个字段组成,不同字段间用空格或 tab 键分隔。前 5 个字段指定命令要运行的时间
  分钟 (0-59) 小时 (0-23) 日期 (1-31) 月份 (1-12) 星期几(0-6,其中 0 代表星期日)
  第 6 个字段是一个要在适当时间执行的字符串
  例子: #MIN HOUR DAY MONTH DAYOFWEEK COMMAND #每天早上6点10分
  10 6 * * * date #每两个小时
  0 */2 * * * date (solaris 5.8似乎不支持此种写法) #晚上11点到早上8点之间每两个小时,早上8点
  0 23-7/2,8 * * * date #每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
  0 11 4 * mon-wed date #1月份日早上4点
  0 4 1 jan * date 补充:在使用crontab的时候,要特别注意的是运行脚本中能够访问到的环境变量和当前测试环境中的环境变量未必一致,一个比较保险的做法是在运行的脚本程序中自行设置环境变量(export) (1)先建一个文件crond.txt如下, 每天早上5点36分重新启动
  36 5 * * * reboot (2)上传到/opt目录
  (3)运行命令
  crontab /opt/crond.txt crontab -l 让配置文件生效:如果让配置文件生效,还得重新启动cron,切记,既然每个用户下的cron配置文件修改后。也要重新启动cron服务器。
  在Fedora 和Redhat中,我们应该用;
  [root@localhost ~]# /etc/init.d/crond restart 如果让crond 在开机时运行,应该改变其运行级别;
  [root@localhost ~]# chkconfig –levels 35 crond on service crond status 查看 cron服务状态,如果没有启动则 service crond start启动它, cron服务是一个定时执行的服务,可以通过crontab 命令添加或者编辑需要定时执行的任务
  Crontab文件的每一行由六个域(minutes、hours、day of month、month、day of week、 command)组 成,域之间用空格或Tab分开,其中:
  minutes: 分钟域,值的范围是0到59 hours: 小时域,值的范围是0到23 day of month: 日期,值的范围是1到31 month: 月份,值的范围是1到12 day of week: 星期,值的范围是0到6,星期日值为0 command: 所要运行的命令
  如果一个域是*,表明命令可以在该域所有可能的取值范围内执行。
  如果一个域是由连字符隔开的两个数字,表明命令可以在两个数字之间的范围内执行(包括两个数字 本身)。
  如果一个域是由逗号隔开的一系列值组成的,表明命令可以在这些值组成的范围内执行。
  如果日期域和星期域都有值,则这两个域都有效。
  编写一个文件,用以启动自动备份进程。
  cd /opt touch reboot.txt 在reboot.txt中添加一下内容: 0 4 * * * reboot crontab /opt/reboot.txt 用crontab -e编辑定时操作,例如加入下行命令:
  用crontab -l命令来查看
  注意:需要启动服务(添加在rc.local中) 重启crond任务
  /etc/init.d/cron restart (ubuntu下) 第一种 在Fedora或Redhat 等以RPM包管理的系统中;
  [root@localhost ~]# /etc/init.d/crond start [root@localhost ~]# /etc/init.d/crond stop [root@localhost ~]# /etc/init.d/crond restart /etc/rc.d/init.d/crond restart 命令简介
  crontab-操作每个用户的守护程序和该执行的时间表。
  部分参数说明
  crontab file [-u user]-用指定的文件替代目前的crontab。
  crontab-[-u user]-用标准输入替代目前的crontab. crontab-1[user]-列出用户目前的crontab. crontab-e[user]-编辑用户目前的crontab. crontab-d[user]-删除用户目前的crontab. crontab-c dir- 指定crontab的目录。
  crontab文件的格式:M H D m d cmd. M: 分钟(0-59)。
  H:小时(0-23)。
  D:天(1-31)。
  m: 月(1-12)。
  d: 一星期内的天(0~6,0为星期天)。
  cmd要运行的程序,程序被送入sh执行,这个shell只有USER,HOME,SHELL这三个环境变量。
  下面是一个例子文件:
  #MIN HOUR DAY MONTH DAYOFWEEK COMMAND
  #每天早上6点
  106* * * date
  #每两个小时
  0*/2* * * date
  #晚上11点到早上8点之间每两个小时,早上部点
  0 23-7/2,8* * * date
  #每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
  0 11 4* mon-wed date
  #1月份日早上4点
  0 4 1 jan* date
  范例
  lark:~>crontab-1 列出用户目前的crontab.
  #MIN HOUR DAY MONTH DAYOFWEEK COMMAND
  10 6* * * date
  0*/2* * * date
  0 23-7/2,8 * * * date

 

RAID 5单个硬盘损坏解决办法

设备环境为:HP-DL380-G5,用四个500G的sata盘做的raid5,在一次突然断电之后不久,有一块硬盘亮红灯,基本判断为已经掉线。咨询HP-800要求先备份数据,而后重启检查,但是服务器跑的是虚拟化,单个文件最大在128G以上,没有vcent授权无法迁移,所以800建议等于废话。
采取的办法是:关机,把坏掉的盘撤掉,换上同型号同容量的硬盘,开机,会有个提示:F1(重建raid覆盖现有信息),F2(重建raid保留现有信息),选择F1,启动,没有出现异常。