mysqld_safe启动方式报错

2017-01-19T07:20:22.148636Z 0 [ERROR] unknown variable ‘defaults-file=/Users/wenzg/local/mysql/my.cnf’
2017-01-19T07:20:22.148666Z 0 [ERROR] Aborting

mysql的error log中始终报这个错误,开始以为是其它什么错误,其实主要是由于参数的位置不同。
报错的启动命令:

/Users/wenzg/local/mysql/bin/mysqld --user=mysql --defaults-file=/Users/wenzg/local/mysql/my.cnf --basedir=/Users/wenzg/local/mysql/ --datadir=/Users/wenzg/local/mysql/data/ --plugin-dir=/Users/wenzg/local/mysql//lib/plugin --log-error=/Users/wenzg/local/mysql/data//local-dev.err --pid-file=/Users/wenzg/local/mysql/data/local-dev.pid --socket=/Users/wenzg/local/mysql/tmp/mysql.sock --port=7777

解决方法:

/Users/wenzg/local/mysql/bin/mysqld --defaults-file=/Users/wenzg/local/mysql/my.cnf --basedir=/Users/wenzg/local/mysql/ --datadir=/Users/wenzg/local/mysql/data/ --plugin-dir=/Users/wenzg/local/mysql//lib/plugin --user=mysql --log-error=/Users/wenzg/local/mysql/data//local-dev.err --pid-file=/Users/wenzg/local/mysql/data/local-dev.pid --socket=/Users/wenzg/local/mysql/tmp/mysql.sock --port=7777
发表在 异常解决办法 | 留下评论

开机启动nginx,监控webserver

将一下脚本做成定时任务。

#!/bin/sh
exec 0<>/dev/null
basedir=/Users/wenzg/local
exec 1>>$basedir/nginx/logs/launch.log
exec 2>>$basedir/nginx/logs/launch.log.wf
lockfile=${basedir}/nginx/var/launch.lock

do_start()
{
    tries=0
    limit=3
    while [ $tries -lt $limit ]; do
	tries=$(( tries + 1 ))
	res=`/usr/sbin/lsof -i tcp:8888`
	if [ $? -ne 0 ]; then
	    if [ $tries -lt $limit ]; then
		echo "Try to launch the WebServer...(${tries})"
		echo "Waiting for launch the PHP-FPM..."
		${basedir}/php/sbin/php-fpm -c ${basedir}/php/etc/php.ini -y ${basedir}/php/etc/php-fpm.conf			
		echo "Waiting for launch the Nginx..."
		${basedir}/nginx/sbin/nginx
		echo "Waiting for launch the Mysql..."
		${basedir}/mysql/bin/mysqld_safe --defaults-file=${basedir}/mysql/my.cnf --pid-file=${basedir}/mysql/data/local-dev.pid --user=mysql &
		sleep 5
	    else
		msg="Retry exceeded maximum limit (${limit}), contact administrator..."
		echo "${msg}" |mail -s "Webserver try restart failed." wenzg_123@sina.com 
		echo ${msg}
		return 0
	    fi
	else
	    rm ${lockfile}
	    tries=$limit
	fi
    done
    return 0
}

if [ -f ${lockfile} ];then
	echo 'Task is trying to start,please wait...'
	exit 1
else
	touch ${lockfile}
	do_start
	exit 0
fi
发表在 小技巧 | 留下评论

php-fpm启动方式及一些参数

高版本的php已经内置了php-fpm,目录结构如下:

/usr/local/php/sbin/php-fpm
/usr/local/php/etc/php-fpm.conf
/usr/local/php/etc/php.ini

启动命令:

#测试php-fpm配置
/usr/local/php/sbin/php-fpm -t
/usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini -y /usr/local/php/etc/php-fpm.conf -t
 
#启动php-fpm
/usr/local/php/sbin/php-fpm
/usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini -y /usr/local/php/etc/php-fpm.conf
 
#关闭php-fpm
kill -INT `cat /usr/local/php/var/run/php-fpm.pid`
 
#重启php-fpm
kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`

更多fpm配置信息:http://www.cnblogs.com/argb/p/3604340.html

发表在 涨姿势 | 留下评论

mac 执行sed -i指令时,总是出现extra characters at the end of command

unix和linux有些命令不一样:
sed -i “s/192.168.0.2/192.168.0.3/g” *.rptdesign
在linux下没啥问题,但在mac下就有问题了,解决办法是在前边价格”"就ok了。
sed -i “” “s/192.168.0.2/192.168.0.3/g” *.rptdesign

发表在 小技巧 | 留下评论

mac上访问samba服务器

有时候mac terminal下需要用到samba,方法如下:

打开safari(其他浏览器貌似都不行)输入smb://ip,回车后出现输入用户名密码对话框,若是匿名则选择作为“客人”选项
例子 smb://192.168.2.3

发表在 小技巧 | 留下评论

MAC查看端口占用情况

由于mac是基于unix开发的系统,跟之前用的linux命令稍微有点区别,之前redhat下一般netstat -tunpl |grep :8080就可以了,mac下是用下面的:
命令 lsof -i tcp:port (port替换成端口号,比如6379)可以查看该端口被什么程序占用,并显示PID,方便KILL

发表在 小技巧 | 留下评论

nginx+php-fpm方式php的error_log不生效原因

问题描述:
php.ini已经配置了,php cli下报错正常,只是在php-fpm方式下无日志。
解决办法:
~/local/php/etc/php-fpm.conf
添加
; php-fpm的配置文件php-fpm.conf中默认是关闭worker进程的错误输出,直接把他们重定向到/dev/null,所以我们在nginx的error log 和php-fpm的errorlog都看不到php的错误日志
catch_workers_output = yes

注意:php-fpm中的error_log参数配置和php.ini中的error_log会重复,那没事儿,php cli下用的php.ini的error_log,nginx下的报错,肯定走的是php-fpm.conf下的error_log配置,当然也可以讲地址设置成一样的。

发表在 php异常 | 留下评论

nignx error_log 报 [alert] 27980#0: setrlimit(RLIMIT_NOFILE, 20480) failed (22: Invalid argument)

报错:
[alert] 27980#0: setrlimit(RLIMIT_NOFILE, 20480) failed (22: Invalid argument)

原因:
配置中参数设置超过unix或者linux最大文件开启个数

#user  nobody;
worker_processes  20;
#worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
worker_rlimit_nofile 20480;

error_log   "/Users/wenzg/local/nginx/logs/error.log"   notice;
pid         "/Users/wenzg/local/nginx/var/nginx.pid";

events {
    #use epoll;
    worker_connections  20480; 
}

解决办法:
1、ulimit -n 先查看下,然后设置成一样的。
2、执行
ulimit -HSn 20480
重启php-fpm
再查看php-fpm日志
修改系统默认允许打开文件数使他永久生效
修改文件/etc/security/limits.conf
添加两行
* soft nofile 20480
* hard nofile 20480
设置为星号代表全局,这个当中的硬限制是实际的限制,而软限制,是warnning限制,只会做出warning

发表在 nginx | 留下评论

获取日期(排除节假日)

	/**
	 *	获取日期
	 *	@param $day
	 *	@param $rule
	 *	@return $arrivalData
	 */
	private function getDay($day, $rule){
		$arrivalData = '0000-00-00';
    	$arrivalDayNum = array(0=>0,1=>1,2=>2,3=>3,4=>0,5=>1,6=>2,7=>3);
    	$arrivalDay = isset($arrivalDayNum[$rule]) ? $arrivalDayNum[$rule] : 0;
    	if (in_array($rule, array(4,5,6,7))) {
    		$arrivalData = date("Y-m-d",strtotime("$day +$arrivalDay day"));
    	}elseif (in_array($rule, array(0,1,2,3))) {
			$already_add_day = 0;
			$arrivalData = $day;
			while($already_add_day<$rule){
    			$arrivalData = date('Y-m-d', strtotime($arrivalData) + 86400);
				$day_s = strtotime($arrivalData);
				$y = date('Y', $day_s);
				$m = date('m', $day_s);
				$d = date('d', $day_s);
				$this->query->clear()
					->select('count(1) as `cnt`')
					->from('#__holiday_dates')
					->where("F_year={$y} and F_month={$m} and F_day={$d} and F_enable=1");
				$this->db->sql = $this->query;
				$cnt = (int) ($this->db->fetch_column('cnt'));
    			if($cnt > 0){
        				continue;
    			}else{
        				$already_add_day++;
    			}
			}
    	}
		return $arrivalData;
	}

节假日表结构

CREATE TABLE `t_holiday_dates` (
  `F_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `F_year` char(4) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL COMMENT '年',
  `F_month` char(2) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL COMMENT '月',
  `F_day` char(2) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL COMMENT '日',
  `F_create_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '创建时间',
  `F_modify_time` datetime DEFAULT '0000-00-00 00:00:00' COMMENT '修改时间',
  `F_operator_uid` varchar(64) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL COMMENT '操作人员',
  `F_enable` tinyint(2) unsigned DEFAULT '1' COMMENT '逻辑状态',
  PRIMARY KEY (`F_id`) KEY_BLOCK_SIZE=1024,
  UNIQUE KEY `I_year_month_day` (`F_year`,`F_month`,`F_day`) KEY_BLOCK_SIZE=1024
) ENGINE=InnoDB AUTO_INCREMENT=589 DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8 COMMENT='节假日管理表'
发表在 涨姿势 | 留下评论

touch创建文件为指定时间

格式 MMDDhhmm
touch -t 10112200 new.txt

格式 yyyyMMDDhhmm
touch -t 200910112200 new.txt

创建与已存在文件相同时间
touch -r /etc/passwd new.txt

发表在 bash | 留下评论