很久以前的一道面试题目

#!/bin/bash

def=30
dir=/data/1/
dir2=/data/2/
for i in `ls -l $dir|awk '{print $9}'`
do
size=`du -shm ${dir}|awk '{print $1}'`

if [[ $size -gt $def ]] ;
then
mv ${dir}/$i ${dir2}
fi

done

切割Nginx日志

切割Nginx日志 这个是cp了 s135的 哈哈, 这个还是很有用的 ,把日志mv 到空间比较大的分区去,不用老担心磁盘满报警

[root@test_evan_vm logs]# cat /data/cut
#!/bin/bash
#The nginx logs path
logs_path="/usr/local/nginxbak/logs/"
oldlogs_path="/data/logs/"
mkdir -p ${oldlogs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/
mv ${logs_path}access.log ${oldlogs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/access_$(date -d "yesterday" +"%Y%m%d").log

[root@test_evan_vm logs]# crontab -l
30 02 * * * /data/cut

结果如下
[root@test_evan_vm logs]# ls /data/logs/2013/02/access_20130227.log
/data/logs/2013/02/access_20130227.log

开启php错误日志

第一 find 一下 配置文件在哪

find / -name php.ini

打开配置文件 ,找到 相似的
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Error handling and logging ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Error handling and logging ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
error_reporting = E_ALL
display_errors = On
display_startup_errors = Off
log_errors = On
log_errors_max_len = 1024
ignore_repeated_errors = Off
report_memleaks = On
track_errors = On
error_log = ../apps/php/phperr.log

tail -f ../apps/php/phperr.log

对了 ,关于那个 最新的LNMP GD问题,也可以这样看一下的

计划任务(转)

Linux中几乎任务分为两种,突发性和周期性~分别对应的两种服务即是,at、cron 。

At:at是个可以处理仅执行一次就结束排程的指令,不过要执行at时,必须要有atd这个服务的启动才行。

Crontab:crontab这个指令所设定的工作将会循环的一直进行下去,可循环的时间为:分钟、小时、每周、每月、每年等。同样crontab也需要crond这个服务启动才行。

首先说明下at的计划任务~~

1. 启动atd服务。/etc/init.d atd start

2. 使之开启自启动。chkconfig atd on

Atd的计划任务通过/etc/at.deny与/etc/at.allow两个文件来控制具体人的使用权限。(注意:当两个文件同时存在某个用户时,那么该用户可以最终是可以使用at计划任务的。如果两个文件都不存在某个用户,那么只能root用户使用at计划任务。)

3. at的用法实练。
[root@rhce ~]# at [-mldv] TIME[root@rhce ~]# at –c 工作编号选项参数:-m      :当at的工作完成后,即使没有输错信息,也发邮件给该使用者通知工作已经完成。-l      :at –l 相当于atq,列出目前系统上面的所有该使用者的at计划任务。-d      :at –d 相当于adrm,可以取消一个在at计划任务中的工作。-v      :可以使用叫明细的时间格式列出at计划任务中的工作列表。-c      :可以列出后面接的该项工作的实际指令内容。 TIME:时间格式,这里可以定义出【什么时候要进行at这项工作】的时间,格式有:  HH:MM                        ex> 04:00        在今日的 HH:MM 時刻進行,若該時刻已超過,則明天的 HH:MM 進行此工作。  HH:MM YYYY-MM-DD            ex> 04:00 2009-03-17        強制規定在某年某月的某一天的特殊時刻進行該工作!  HH:MM[am|pm] [Month] [Date]  ex> 04pm March 17        也是一樣,強制在某年某月某日的某時刻進行!  HH:MM[am|pm] + number [minutes|hours|days|weeks]        ex> now + 5 minutes    ex> 04pm + 3 days        就是說,在某個時間點『再加幾個時間後』才進行。  [root@rhce ~]# date2012年 12月 04日 星期二 03:09:46 EST[root@rhce ~]# at 3:30 (设置在今日的3:30分执行计划任务)at> /sbin/ifconfigat> <EOT>job 5 at 2012-12-04 03:30[root@rhce ~]# [root@rhce ~]# at –l (查看已设置的计划任务)5      2012-12-04 03:30 a root[root@rhce ~]# [root@rhce ~]# atq (同at –l效果一样也是查看已设置的计划任务)5      2012-12-04 03:30 a root[root@rhce ~]#
4. batch:系统有空时才进行背景任务

其实batch也是利用at来进行指令的下达的,只是加入一些控制参数而已。这个batch神奇的地方就在于:他会在cpu工作负载小于0.8的时候,才进行你所下达的工作任务。
範例一:同樣是機房停電在 2009/3/17 23:00 關機,但若當時系統負載太高,則暫緩執行[root@www ~]# batch 23:00 2009-3-17at> syncat> syncat> shutdown -h nowat> <EOT>job 6 at 2009-03-17 23:00 [root@www ~]# atq6      2009-03-17 23:00 b root[root@www ~]# atrm 6
下来介绍一下crontab计划任务了~~

1. 同样也是需要启动crond服务的。/etc/init.d/crond start

2. 使之开机自启动。chkconfig crond on

Crond服务也是使用/etc/cron.allow和/etc/cron.deny两个文件控制具体用户是否具有使用crontab命令的权限。

l /etc/cron.allow:将可以使用crontab的帐号写入其中,若不在这个文件中的使用者则不可使用crontab。

l /etc/cron.deny:将不可以使用crontab的帐号写入其中,若没有在这个文件中的使用者就可以使用crontab。

3. crontab用法实练。

Crontab [-u username] [ -l | -e | -r ]

选项与参数:

-u :只有root才能进行这个任务,亦即帮其他使用者建立或者移除ccrontab计划任务。

-e :编辑crontab的工作内容。

-l :查看crontab的工作内容。

-r :移除所有的crontab工作内容,若仅要移除一项,使用-e去编辑即可。

时间同步服务器 and crontab

#这是我们的项目所采用的
* * * * * /usr/sbin/ntpdate 0.rhel.pool.ntp.org 1.rhel.pool.ntp.org /dev/null 2 >&1
yum install ntp ntpdate -y
chkconfig ntpd on
/etc/init.d/ntpd start

*/30 * * * * /usr/sbin/ntpdate pool.ntp.org

其实就是要搞定 系统时间(date)和系统bios时间 就行了

.查看系统时间(date)和系统bios时间(hwclock或/sbin/hwclock)
/usr/sbin/ntpdate 0.rhel.pool.ntp.org 1.rhel.pool.ntp.org 使系统时间和时间服务器时间同步.
将系统时间写入bios(hwclock -w)
再次查看系统时间和系统bios时间
以上工作仅是当前的时间同步,所以还需执行以下工作:

1.使用以下命令编辑任务管理器
crontab -e
2.将以下语句加入到任务管理器中,其用途是:每小时执行一次/usr/sbin/ntpdate 0.rhel.pool.ntp.org 1.rhel.pool.ntp.org;/sbin/hwclock -w;
注:执行任务计划的时间随机订
之上是总结,按之上步骤来即可,以下参考就行:
先进入到路径:
/usr/sbin/下
使用其中的同步工具ntpdate,同步的时间服务器为:
使用方法:
/usr/sbin/ntpdate 0.rhel.pool.ntp.org 1.rhel.pool.ntp.org
标准时间同步方法:
分布操作:
察看bios时间与系统时间
hwclock
察看系统时间
date
使用ntpdate命令使系统时间与时间服务器同步
ntpdate 0.rhel.pool.ntp.org
将系统时间写入bios
hwclock -w
解决办法使用:
加入计划任务
1.使用以下命令编辑任务管理器
crontab -e
2.将以下语句加入到任务管理器中,
;/sbin/hwclock -w;

[root@localhost mon]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .—————- minute (0 – 59)
# | .————- hour (0 – 23)
# | | .———- day of month (1 – 31)
# | | | .——- month (1 – 12) OR jan,feb,mar,apr …
# | | | | .—- day of week (0 – 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed

Linux 下crontab命令的功能是在一定的时间间隔调度一些命令的执行。在/etc目录下有一个crontab文件,这里存放有系统运行的一些调度程序。每个用户可以建立自己的调度crontab。
cron 的主配置文件是 /etc/crontab,它包括下面几行:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
前四行是用来配置 cron 任务运行环境的变量。SHELL 变量的值告诉系统要使用哪个 shell 环境(在这个例子里是 bash shell);PATH 变量定义用来执行命令的路径。cron 任务的输出被邮寄给 MAILTO 变量定义的用户名。如果 MAILTO 变量被定义为空白字符串(MAILTO=””),电子邮件就不会被寄出。HOME 变量可以用来设置在执行命令或脚本时使用的主目录。
/etc/crontab 文件中的每一行都代表一项任务,它的格式是:
minute hour day month dayofweek command
minute — 分钟,从 0 到 59 之间的任何整数
hour — 小时,从 0 到 23 之间的任何整数
day — 日期,从 1 到 31 之间的任何整数(如果指定了月份,必须是该月份的有效日期)
month — 月份,从 1 到 12 之间的任何整数(或使用月份的英文简写如 jan、feb 等等)
dayofweek — 星期,从 0 到 7 之间的任何整数,这里的 0 或 7 代表星期日(或使用星期的英文简写如 sun、mon 等等)
command — 要执行的命令(命令可以是 ls /proc >> /tmp/proc 之类的命令,也可以是执行你自行编写的脚本的命令。)
在以上任何值中,星号(*)可以用来代表所有有效的值。譬如,月份值中的星号意味着在满足其它制约条件后每月都执行该命令。
整数间的短线(-)指定一个整数范围。譬如,1-4 意味着整数 1、2、3、4。
用逗号(,)隔开的一系列值指定一个列表。譬如,3, 4, 6, 8 标明这四个指定的整数。
正斜线(/)可以用来指定间隔频率。在范围后加上 / 意味着在范围内可以跳过 integer。譬如,0-59/2 可以用来在分钟字段定义每两分钟。间隔频率值还可以和星号一起使用。例如,*/3 的值可以用在月份字段中表示每三个月运行一次任务。
开头为井号(#)的行是注释,不会被处理。
显示用户的Crontab文件的内容
crontabl –l
-i
删除用户的Crontab文件前给提示
crontabl -ri
-r
从Crontab目录中删除用户

修改系统字符集

[root@test_evan_vm ~]# cat /etc/sysconfig/i18n
LANG=”en_US.UTF-8″
SYSFONT=”latarcyrheb-sun16″
[root@test_evan_vm ~]# locale
LANG=en_US.UTF-8
LC_CTYPE=”en_US.UTF-8″
LC_NUMERIC=”en_US.UTF-8″
LC_TIME=”en_US.UTF-8″
LC_COLLATE=”en_US.UTF-8″
LC_MONETARY=”en_US.UTF-8″
LC_MESSAGES=”en_US.UTF-8″
LC_PAPER=”en_US.UTF-8″
LC_NAME=”en_US.UTF-8″
LC_ADDRESS=”en_US.UTF-8″
LC_TELEPHONE=”en_US.UTF-8″
LC_MEASUREMENT=”en_US.UTF-8″
LC_IDENTIFICATION=”en_US.UTF-8″
LC_ALL=

修改 /etc/sysconfig/i18n 换成你要的字符集
[root@test_evan_vm ~]# cat /etc/sysconfig/i18n
LANG=”en_US.UTF-8″
SYSFONT=”latarcyrheb-sun16″
#上面的是英文
如果要X-window 显示中文就得改成
LANG=”zh_CN.UTF-8″

还有另一种
cp /etc/sysconfig/i18n $HOME/.i18n
修改 $HOME/.i18n 文件
特点是不会影响别的用户哦