查找大于10M的文件 find / -type f -size +10000000c -exec du -sh {} \;
递归检查指定目录下php文件是否无语法错误
find ./ -type f -name '*.php' -exec php -ln {} \;
来自: http://man.linuxde.net/find
注:-name 模糊匹配的时候要加引号 不然有问题
查找大于10M的文件 find / -type f -size +10000000c -exec du -sh {} \;
递归检查指定目录下php文件是否无语法错误
find ./ -type f -name '*.php' -exec php -ln {} \;
来自: http://man.linuxde.net/find
注:-name 模糊匹配的时候要加引号 不然有问题
#!/bin/bash
WORK_DIR=/home/pay/opbin/cut_log ts=$(date -d '1 hours ago' '+%Y%m%d%H');
for LOGFILE in `sort $WORK_DIR/{logfiles,logfiles_zhengli}|uniq |awk '{print $1}'` do LOG_DIR=`echo $LOGFILE | awk -F "//" '{ print $1 }'` LOG_FILE=`echo $LOGFILE | awk -F "//" '{ print $2 }'` if [ ! -f $LOG_DIR/$LOG_FILE ] then echo "Log file $LOGFILE isn't exist.\n" >> cut_log_error.log else if [[ ! -e $LOG_DIR/$LOG_FILE.$ts ]];then #cp $LOG_DIR/$LOG_FILE $LOG_DIR/$LOG_FILE.$ts; echo "" > $LOG_DIR/$LOG_FILE mv $LOG_DIR/$LOG_FILE $LOG_DIR/$LOG_FILE.$ts fi fi done
介绍:
一般我们都是按照文件扩展名来判断文件类型,但是这个很不靠谱,轻易就通过修改扩展名来躲避了,一般必须要读取文件信息来识别,PHP扩展中提供了类似 exif_imagetype 这样的函数读取图片类的文件类型,但是很多时候扩展不一定安装了,有时候就需要自己来实现识别文件类型的工作。下面代码就展示了自己通过读取文件头信息来识别文件的真实类型。
', $file_type, ' code:', $type_code, '
'; }
本例输出结果
c:\1.jpg type: jpg code:255216
c:\1.png type: png code:13780
c:\1.gif type: gif code:7173
c:\1.rar type: rar code:8297
c:\1.zip type: zip code:8075
c:\1.exe type: exe code:7790
对于https用file_get_contents时
PHP Warning: file_get_contents(): Unable to find the wrapper "https" - did you forget to enable it when you configured PHP?
解决方案:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
你可以从语义上看出,它是忽略/跳过了SSL安全验证。也许这不是一个很好的做法,但对于普通的场景中,这几经足够了。
下面是利用Curl
封装的一个能访问HTTPS内容的函数:
function getHTTPS($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_REFERER, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); $result = curl_exec($ch); curl_close($ch); return $result; }
转载自:http://www.techug.com/php-https
压缩文件目录:
tar -zcvf link_bank.tar.gz --exclude=./link_bank/data ./link_bank
注:红色目录后面都不能加/,否则会报错
---exclude 是排除哪些目录
排除多个的话就是:
tar -zcvf link_bank.tar.gz --exclude=./link_bank/data1 --exclude=./link_bank/data2 ./link_bank
解压文件:
tar -zxvf link_bank.tar.gz
如果想看下一个压缩文件里面有什么文件可以使用:tar -ztvf *.tar.gz
<?php
$php_error = ‘/home/users/local/php/log/php_error.log’;
// 获取命令参数
$opts = getopt (“d:” );
// 获取日期
if (isset ( $opts ['d'] )) {
$date = $opts ['d'];
if (false === strptime ( $date, “%Y-%m-%d %H:%M:%S” )) {
echo ‘格式不正确’;
exit(1);
}
} else {
echo ‘参数不正确’;
exit(2);
}
//检查前一分钟的日志
$monitor_date = strftime(“%d\-%b\-%Y %H\:%M”, strtotime($date) – 60);
$pattern = ‘^\[' . $monitor_date . '\:[0-5][0-9]\] PHP (Parse|Fatal) error’;
$cmd = ‘/bin/egrep \” . $pattern . ‘\’ ‘ . $php_error;
exec($cmd, $errors);
if (!empty($errors)) {
print_r($errors);
}
比如像array_map、array_filter、array_walk等等都需要回调函数,demo中给我们举的例子是面向过程的方法,但是面向对象的貌似没有。
<?php // An example callback function function my_callback_function() { echo 'hello world!'; } // An example callback method class MyClass { static function myCallbackMethod() { echo 'Hello World!'; } } // Type 1: Simple callback call_user_func('my_callback_function'); // Type 2: Static class method call call_user_func(array('MyClass', 'myCallbackMethod')); // Type 3: Object method call $obj = new MyClass(); call_user_func(array($obj, 'myCallbackMethod')); // Type 4: Static class method call (As of PHP 5.2.3) call_user_func('MyClass::myCallbackMethod'); // Type 5: Relative static class method call (As of PHP 5.3.0) class A { public static function who() { echo "A\n"; } } class B extends A { public static function who() { echo "B\n"; } } call_user_func(array('B', 'parent::who')); // A // Type 6: Objects implementing __invoke can be used as callables (since PHP 5.3) class C { public function __invoke($name) { echo 'Hello ', $name, "\n"; } } $c = new C(); call_user_func($c, 'PHP!'); ?>
${varible#*string} 从左往右,删除最短的一个以string结尾的子串,即截取第一个string子串之后的字符串
${varible##*string} 从左往右,删除最长的一个以string结尾的子串,即截取最后一个string子串之后的字符串
${varible%string*} 从右往左,删除最短的一个以string开头的子串,即截取最后一个string子串之前的字符串
${varible%%string*} 从右往左,删除最长的一个以string开头的子串,即截取第一个string子串之前的字符串
例如:
export TEST=123abc456abc789
echo ${TEST#*abc} ===>删掉123abc剩下456abc789
echo ${TEST##*abc} ===>删掉123abc456abc剩下”789
echo ${TEST%abc*} ===>删掉abc789剩下123abc456
echo ${TEST%%abc*} ===>删掉abc456abc789剩下123
2. 固定位置截取
${varible:start:len}:截取变量varible从位置start开始长度为len的子串。第一个字符的位置为0。
例如:
export TEST=123abc456abc789
echo ${TEST:0:3} ===>”123″
echo ${TEST:3:3} ===>”abc”