背景:# Query_time: 3.124972 Lock_time: 0.000162 Rows_sent: 0 Rows_examined: 1
SET timestamp=1413791419;
UPDATE LOW_PRIORITY `boblog_blogs` SET `views`=`views`+1 WHERE `blogid`='4588';
阅读全文
SET timestamp=1413791419;
UPDATE LOW_PRIORITY `boblog_blogs` SET `views`=`views`+1 WHERE `blogid`='4588';
阅读全文
PHP中Notice: iconv(): Unknown error (84) 的解决办法
Php/Js/Shell/Go jackxiang 2014-10-23 21:20
今天用PHP读取一个接口的数据使用了iconv转换字符编码格式,出现Notice: iconv(): Unknown error (84) :
上面这行摘自:http://jackxiang.com/post/1057/
最后,修改为如下:
———————————————————————————————————————————————————
读其官方文档 http://www.php.net/manual/en/function.iconv.php对参数out_charset的解释:
The output charset.
If you append the string //TRANSLIT to out_charset transliteration is activated. This means that when a character can’t be represented in the target charset, it can be approximated through one or several similarly looking characters. If you append the string //IGNORE, characters that cannot be represented in the target charset are silently discarded. Otherwise, str is cut from the first illegal character and an E_NOTICE is generated.
大概的意思就是:
如果你加上 //TRANSLIT 到out_charset 的参数后面,意味着如果找不到目标编码,则程序会去找与其相近的编码。如果你加的是//IGNORE,则不会去找相近的编码,而且只要有一个字符是程序无法识别的则将会报错。
根据上面的解释我将代码
iconv('gb2312','utf-8', serialize($storeData));
改为
iconv('gb2312','utf-8//TRANSLIT//IGNORE', serialize($storeData));
这样就ok了!
来自:http://www.tonitech.com/822.html
上面这行摘自:http://jackxiang.com/post/1057/
最后,修改为如下:
———————————————————————————————————————————————————
读其官方文档 http://www.php.net/manual/en/function.iconv.php对参数out_charset的解释:
The output charset.
If you append the string //TRANSLIT to out_charset transliteration is activated. This means that when a character can’t be represented in the target charset, it can be approximated through one or several similarly looking characters. If you append the string //IGNORE, characters that cannot be represented in the target charset are silently discarded. Otherwise, str is cut from the first illegal character and an E_NOTICE is generated.
大概的意思就是:
如果你加上 //TRANSLIT 到out_charset 的参数后面,意味着如果找不到目标编码,则程序会去找与其相近的编码。如果你加的是//IGNORE,则不会去找相近的编码,而且只要有一个字符是程序无法识别的则将会报错。
根据上面的解释我将代码
iconv('gb2312','utf-8', serialize($storeData));
改为
iconv('gb2312','utf-8//TRANSLIT//IGNORE', serialize($storeData));
这样就ok了!
来自:http://www.tonitech.com/822.html
[实践OK]linux重定向及nohup不输出/无输出的方法,用strace调试程序的输出输入文件的方法涉及到linux 重定向 标准错误与标准输出到同一文件 。使用nohup执行多个命令。
Unix/LinuxC技术 jackxiang 2014-10-22 23:26
使用nohup执行多个命令:
背景:也就是如ssh登录后发邮件,用nohup可以快速推到后台,更快进入终端,不用直到发完邮件才进入#shell下。
nohup /usr/local/lighttpd/sbin/lighttpd -f /usr/local/lighttpd/etc/lighttpd.conf >/dev/null 2>&1 >/dev/null &
nohup /usr/local/cronolog/sbin/cronolog /data/logs/lighttpd/img.bbs.cntv.cn-access_%Y%m%d.log >/dev/null 2>&1 >/dev/null &
实践成功来自:https://blog.csdn.net/qq_27870421/article/details/90753948
From:http://www.tuxradar.com/answers/215
发邮件链接:
https://jackxiang.com/post/7579/
linux 重定向 标准错误与标准输出到同一文件 :
特别是那个错误输出啥的,这块strace就是一例:
strace php include.php > abcdef.txt //这样显然是没法实现把输出导入到abcdef.txt文件的啦。
重定向标准错误到标准输出
cat foo 2>&1 得出:strace php include.php > abcdef.txt 2>&1 ,还有别的写法参考来自:
http://blog.chinaunix.net/uid-21142030-id-3211182.html
------------------------------------------------------------------------------------------------------------------------
这种方式的输出重定向使得以 word 扩展结果为名的文件被打开并通过文件描述符 n 从尾部添加。如果没有指定 n 就使用标准输出 (文件描述符
1)。如果文件不存在,它将被创建。
重定向的一般形式是:
[n]>>word
Redirecting Standard Output and Standard Error
Bash 允许使用这种结构将标准输出和标准错误 (文件描述符 1 和 2) 重定向到以 word 扩展结果为名的文件中。
有两种重定向标准输出/标准错误的形式:
&>word
还有
>&word
两种形式中,推荐使用第一种。它与
>word 2>&1
在语义上等价。
下列描述中,重定向操作符之后的词如果没有特殊说明,都要经过 brace expansion, tilde expansion, parameter expansion, command substitution, arithmetic
expansion, quote removal, pathname expansion, 还有 word splitting。如果扩展为多于一个词, bash 将报错。
注意重定向的顺序非常重要。例如,命令
ls > dirlist 2>&1
将标准输出和标准错误重定向到文件 dirlist, 而命令
ls 2>&1 > dirlist
只会将标准输出重定向到文件 dirlist, 因为在标准输出被重定向到文件 dirlist 中之前,标准错误被复制为标准输出。
————————————————————————————————————————————————
先说一下linux重定向:
0、1和2分别表示标准输入、标准输出和标准错误信息输出,可以用来指定需要重定向的标准输入或输出。
在一般使用时,默认的是标准输出,既1.当我们需要特殊用途时,可以使用其他标号。例如,将某个程序的错误信息输出到log文件中:./program 2>log。这样标准输出还是在屏幕上,但是错误信息会输出到log文件中。
另外,也可以实现0,1,2之间的重定向。2>&1:将错误信息重定向到标准输出。
Linux下还有一个特殊的文件/dev/null,它就像一个无底洞,所有重定向到它的信息都会消失得无影无踪。这一点非常有用,当我们不需要回显程序的所有信息时,就可以将输出重定向到/dev/null。
如果想要正常输出和错误信息都不显示,则要把标准输出和标准错误都重定向到/dev/null, 例如:
# ls 1>/dev/null 2>/dev/null
还有一种做法是将错误重定向到标准输出,然后再重定向到 /dev/null,例如:
# ls >/dev/null 2>&1
注意:此处的顺序不能更改,否则达不到想要的效果,此时先将标准输出重定向到 /dev/null,然后将标准错误重定向到标准输出,由于标准输出已经重定向到了/dev/null,因此标准错误也会重定向到/dev/null,于是一切静悄悄:-)
由于使用nohup时,会自动将输出写入nohup.out文件中,如果文件很大的话,nohup.out就会不停的增大,这是我们不希望看到的,因此,可以利用/dev/null来解决这个问题。
(1)舍弃标准输出,将错误输出到log文件中
nohup ./program >/dev/null 2>log &
(2)如果错误信息也不想要的话:
nohup ./program >/dev/null 2>&1 &
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
关于重定向,参考文章:http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=484163
1. 基本概念
a、I/O重定向通常与 FD有关,shell的FD通常为10个,即 0~9;(FD:file descripter,文件描述符)
b、常用FD有3个,为: 0(stdin,标准输入)、1(stdout,标准输出)、2(stderr,标准错误输出),默认与keyboard、monitor、monitor有关;
c、用 < 来改变读进的数据信道(stdin),使之从指定的档案读进;
d、用 > 来改变送出的数据信道(stdout, stderr),使之输出到指定的档案;
e、0 是 < 的默认值,因此 < 与 0<是一样的;同理,> 与 1> 是一样的;
f、在IO重定向 中,stdout 与 stderr 的管道会先准备好,才会从 stdin 读进资料;
g、管道“|”(pipe line):上一个命令的 stdout 接到下一个命令的 stdin;
h、tee 命令是在不影响原本 I/O 的情况下,将 stdout 复制一份到档案去;
i、bash(ksh)执行命令的过程:分析命令-变量求值-命令替代(``和$( ))-重定向-通配符展开-确定路径-执行命令;
j、( ) 将 command group 置于 sub-shell 去执行,也称 nested sub-shell,它有一点非常重要的特性是:继承父shell的Standard input, output, and error plus any other open file descriptors。
k、exec 命令:常用来替代当前 shell 并重新启动一个 shell,换句话说,并没有启动子 shell。使用这一命令时任何现有环境都将会被清除,。exec 在对文件描述符进行操作的时候,也只有在这时,exec 不会覆盖你当前的 shell 环境。
2. 基本IO
cmd > file 把 stdout 重定向到 file 文件中
cmd >> file 把 stdout 重定向到 file 文件中(追加)
cmd 1> fiel 把 stdout 重定向到 file 文件中
cmd > file 2>&1 把 stdout 和 stderr 一起重定向到 file 文件中
cmd 2> file 把 stderr 重定向到 file 文件中
cmd 2>> file 把 stderr 重定向到 file 文件中(追加)
cmd >> file 2>&1 把 stderr 和 stderr 一起重定向到 file 文件中
cmd < file >file2 cmd 命令以 file 文件作为 stdin,以 file2 文件作为 stdout
cat <>file 以读写的方式打开 file
cmd < file cmd 命令以 file 文件作为 stdin
cmd << delimiter Here document,从 stdin 中读入,直至遇到delimiter 分界符
来自:http://ezplayer.diandian.com/post/2011-06-10/40040502293
背景:也就是如ssh登录后发邮件,用nohup可以快速推到后台,更快进入终端,不用直到发完邮件才进入#shell下。
nohup /usr/local/lighttpd/sbin/lighttpd -f /usr/local/lighttpd/etc/lighttpd.conf >/dev/null 2>&1 >/dev/null &
nohup /usr/local/cronolog/sbin/cronolog /data/logs/lighttpd/img.bbs.cntv.cn-access_%Y%m%d.log >/dev/null 2>&1 >/dev/null &
实践成功来自:https://blog.csdn.net/qq_27870421/article/details/90753948
From:http://www.tuxradar.com/answers/215
发邮件链接:
https://jackxiang.com/post/7579/
linux 重定向 标准错误与标准输出到同一文件 :
特别是那个错误输出啥的,这块strace就是一例:
strace php include.php > abcdef.txt //这样显然是没法实现把输出导入到abcdef.txt文件的啦。
重定向标准错误到标准输出
cat foo 2>&1 得出:strace php include.php > abcdef.txt 2>&1 ,还有别的写法参考来自:
http://blog.chinaunix.net/uid-21142030-id-3211182.html
------------------------------------------------------------------------------------------------------------------------
这种方式的输出重定向使得以 word 扩展结果为名的文件被打开并通过文件描述符 n 从尾部添加。如果没有指定 n 就使用标准输出 (文件描述符
1)。如果文件不存在,它将被创建。
重定向的一般形式是:
[n]>>word
Redirecting Standard Output and Standard Error
Bash 允许使用这种结构将标准输出和标准错误 (文件描述符 1 和 2) 重定向到以 word 扩展结果为名的文件中。
有两种重定向标准输出/标准错误的形式:
&>word
还有
>&word
两种形式中,推荐使用第一种。它与
>word 2>&1
在语义上等价。
下列描述中,重定向操作符之后的词如果没有特殊说明,都要经过 brace expansion, tilde expansion, parameter expansion, command substitution, arithmetic
expansion, quote removal, pathname expansion, 还有 word splitting。如果扩展为多于一个词, bash 将报错。
注意重定向的顺序非常重要。例如,命令
ls > dirlist 2>&1
将标准输出和标准错误重定向到文件 dirlist, 而命令
ls 2>&1 > dirlist
只会将标准输出重定向到文件 dirlist, 因为在标准输出被重定向到文件 dirlist 中之前,标准错误被复制为标准输出。
————————————————————————————————————————————————
先说一下linux重定向:
0、1和2分别表示标准输入、标准输出和标准错误信息输出,可以用来指定需要重定向的标准输入或输出。
在一般使用时,默认的是标准输出,既1.当我们需要特殊用途时,可以使用其他标号。例如,将某个程序的错误信息输出到log文件中:./program 2>log。这样标准输出还是在屏幕上,但是错误信息会输出到log文件中。
另外,也可以实现0,1,2之间的重定向。2>&1:将错误信息重定向到标准输出。
Linux下还有一个特殊的文件/dev/null,它就像一个无底洞,所有重定向到它的信息都会消失得无影无踪。这一点非常有用,当我们不需要回显程序的所有信息时,就可以将输出重定向到/dev/null。
如果想要正常输出和错误信息都不显示,则要把标准输出和标准错误都重定向到/dev/null, 例如:
# ls 1>/dev/null 2>/dev/null
还有一种做法是将错误重定向到标准输出,然后再重定向到 /dev/null,例如:
# ls >/dev/null 2>&1
注意:此处的顺序不能更改,否则达不到想要的效果,此时先将标准输出重定向到 /dev/null,然后将标准错误重定向到标准输出,由于标准输出已经重定向到了/dev/null,因此标准错误也会重定向到/dev/null,于是一切静悄悄:-)
由于使用nohup时,会自动将输出写入nohup.out文件中,如果文件很大的话,nohup.out就会不停的增大,这是我们不希望看到的,因此,可以利用/dev/null来解决这个问题。
(1)舍弃标准输出,将错误输出到log文件中
nohup ./program >/dev/null 2>log &
(2)如果错误信息也不想要的话:
nohup ./program >/dev/null 2>&1 &
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
关于重定向,参考文章:http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=484163
1. 基本概念
a、I/O重定向通常与 FD有关,shell的FD通常为10个,即 0~9;(FD:file descripter,文件描述符)
b、常用FD有3个,为: 0(stdin,标准输入)、1(stdout,标准输出)、2(stderr,标准错误输出),默认与keyboard、monitor、monitor有关;
c、用 < 来改变读进的数据信道(stdin),使之从指定的档案读进;
d、用 > 来改变送出的数据信道(stdout, stderr),使之输出到指定的档案;
e、0 是 < 的默认值,因此 < 与 0<是一样的;同理,> 与 1> 是一样的;
f、在IO重定向 中,stdout 与 stderr 的管道会先准备好,才会从 stdin 读进资料;
g、管道“|”(pipe line):上一个命令的 stdout 接到下一个命令的 stdin;
h、tee 命令是在不影响原本 I/O 的情况下,将 stdout 复制一份到档案去;
i、bash(ksh)执行命令的过程:分析命令-变量求值-命令替代(``和$( ))-重定向-通配符展开-确定路径-执行命令;
j、( ) 将 command group 置于 sub-shell 去执行,也称 nested sub-shell,它有一点非常重要的特性是:继承父shell的Standard input, output, and error plus any other open file descriptors。
k、exec 命令:常用来替代当前 shell 并重新启动一个 shell,换句话说,并没有启动子 shell。使用这一命令时任何现有环境都将会被清除,。exec 在对文件描述符进行操作的时候,也只有在这时,exec 不会覆盖你当前的 shell 环境。
2. 基本IO
cmd > file 把 stdout 重定向到 file 文件中
cmd >> file 把 stdout 重定向到 file 文件中(追加)
cmd 1> fiel 把 stdout 重定向到 file 文件中
cmd > file 2>&1 把 stdout 和 stderr 一起重定向到 file 文件中
cmd 2> file 把 stderr 重定向到 file 文件中
cmd 2>> file 把 stderr 重定向到 file 文件中(追加)
cmd >> file 2>&1 把 stderr 和 stderr 一起重定向到 file 文件中
cmd < file >file2 cmd 命令以 file 文件作为 stdin,以 file2 文件作为 stdout
cat <>file 以读写的方式打开 file
cmd < file cmd 命令以 file 文件作为 stdin
cmd << delimiter Here document,从 stdin 中读入,直至遇到delimiter 分界符
来自:http://ezplayer.diandian.com/post/2011-06-10/40040502293
VI E513: 写入错误,转换失败 (请将 'fenc' 置空以强制执行)
Php/Js/Shell/Go jackxiang 2014-10-22 20:26
E513: 写入错误,转换失败 (请将 'fenc' 置空以强制执行) 警告: 原始文件可能已丢失或损坏 在文件正确写入前请勿退出编辑器!
set fenc=
来自:
http://forum.ubuntu.org.cn/viewtopic.php?p=2498184
set fenc=
来自:
http://forum.ubuntu.org.cn/viewtopic.php?p=2498184
文件大小是这个文件的实际大小,占用空间是这个文件占用的硬盘空间。它们之间会存在差异,比如一个文件占用半个格子,那么另半个格子也算在这个文件了。
——————————————————————
文件大小,同一个文件在Windows下的大小和在Unix下的大小
这里拿文本文件来看,在windows下面可以看文件的属性在文件的大小那里会显示文件有多少字节
在Unix下面可以通过"ls -l" 来看,二者大小是否相等呢?
取决于文件怎么在二者间传递的,
如果使用ftp来传文件(文件里面有很多字符,包括回车、换行等等),则分下面两种情况
一:使用ASCII传输类型
同一个文件在两个系统里面大小不一样,但是文件的内容一样
二:使用二进制传输类型
同一个文件在两个系统里面大小一样,但是文件的内容不一样了,回车在Unix下面看到的是^M
关于文件的占用空间问题
一:在windows下面新建一个文本文件,里面只有一个字符,查看其占用空间结果为4KB
二:在Unix下面新建一个文本文件,同样只输入一个字符,查看其占用空间"du -k file"结果为4KB
这里的4K即有簇的概念,又有block size的概念在里面,这个值可以自己定义的,大小根据具体的应用来定,定的大效能在某些情况下会很好,但是容易浪费空间....
来自:http://blog.chinaunix.net/uid-20652643-id-1906388.html
——————————————————————
文件大小,同一个文件在Windows下的大小和在Unix下的大小
这里拿文本文件来看,在windows下面可以看文件的属性在文件的大小那里会显示文件有多少字节
在Unix下面可以通过"ls -l" 来看,二者大小是否相等呢?
取决于文件怎么在二者间传递的,
如果使用ftp来传文件(文件里面有很多字符,包括回车、换行等等),则分下面两种情况
一:使用ASCII传输类型
同一个文件在两个系统里面大小不一样,但是文件的内容一样
二:使用二进制传输类型
同一个文件在两个系统里面大小一样,但是文件的内容不一样了,回车在Unix下面看到的是^M
关于文件的占用空间问题
一:在windows下面新建一个文本文件,里面只有一个字符,查看其占用空间结果为4KB
二:在Unix下面新建一个文本文件,同样只输入一个字符,查看其占用空间"du -k file"结果为4KB
这里的4K即有簇的概念,又有block size的概念在里面,这个值可以自己定义的,大小根据具体的应用来定,定的大效能在某些情况下会很好,但是容易浪费空间....
来自:http://blog.chinaunix.net/uid-20652643-id-1906388.html
背景:密码太薄弱,出现了渗透,密码得强是关键。
http://www.wooyun.org/bugs/wooyun-2010-079283/auth/2da5f25fa479357867f7ac7ab746b33f?lan=cn&lan=cn&lan=cn
结论:问题还是出在admin admin上面呀。。。。而且现在普通的md5加密已经没啥安全性了,必须加字符串,或2次md5才行啊。。。
http://www.wooyun.org/bugs/wooyun-2010-079283/auth/2da5f25fa479357867f7ac7ab746b33f?lan=cn&lan=cn&lan=cn
结论:问题还是出在admin admin上面呀。。。。而且现在普通的md5加密已经没啥安全性了,必须加字符串,或2次md5才行啊。。。
CentOS 7 正式版发布
Unix/LinuxC技术 jackxiang 2014-10-10 18:07
CentOS 项目正式发布 CentOS 7.0-1406。相当于是 CentOS 7 的正式版。该版本使用存放于 git.centos.org 上的源码进行构建。所有的源码 rpms 采用相同的密钥进行签名,包括二进制文件。
同时从该版本开始 CentOS 将采用新的版本号规则,其中 1406 表示为 2014年6月。通过使用月份作为版本号,我们可以衍生和补发更新媒体容器和云映像、定期更新同时仍然保持连接到基础发行版的版本。
官方的发行说明请看:http://wiki.centos.org/Manuals/ReleaseNotes/CentOS7
CentOS 7 的主要变化包括:
内核更新至 3.10.0
支持 Linux 容器
Open VMware Tools 及 3D 图像能即装即用
OpenJDK-7 作为缺省 JDK
这次直接从 6.5 升级至 7.0(上文已提及)
ext4 及 XFS 的 LVM 快照
转用 systemd、firewalld 及 GRUB2
XFS 作为缺省文件系统
内核空间内的 iSCSI 及 FCoE
支持 PTPv2
支持 40G 网卡
更信息的改进说明请看红帽企业 Linux 7 的发行说明。
CentOS 7 只提供 64 位版本,下载地址:http://mirror.centos.org/centos/7/isos/
国内镜像:http://mirrors.aliyun.com/centos/7.0.1406/
同时从该版本开始 CentOS 将采用新的版本号规则,其中 1406 表示为 2014年6月。通过使用月份作为版本号,我们可以衍生和补发更新媒体容器和云映像、定期更新同时仍然保持连接到基础发行版的版本。
官方的发行说明请看:http://wiki.centos.org/Manuals/ReleaseNotes/CentOS7
CentOS 7 的主要变化包括:
内核更新至 3.10.0
支持 Linux 容器
Open VMware Tools 及 3D 图像能即装即用
OpenJDK-7 作为缺省 JDK
这次直接从 6.5 升级至 7.0(上文已提及)
ext4 及 XFS 的 LVM 快照
转用 systemd、firewalld 及 GRUB2
XFS 作为缺省文件系统
内核空间内的 iSCSI 及 FCoE
支持 PTPv2
支持 40G 网卡
更信息的改进说明请看红帽企业 Linux 7 的发行说明。
CentOS 7 只提供 64 位版本,下载地址:http://mirror.centos.org/centos/7/isos/
国内镜像:http://mirrors.aliyun.com/centos/7.0.1406/
加什么参数可以让tar把软链接所指向的真实数据也打到tar包中
Unix/LinuxC技术 jackxiang 2014-10-10 14:51
背景:有时打包不想打包软链接,有时想要打上,这就是涉及到Linux下的tar命令了,找了下,有一个这样的参数,可使用。
-h, --dereference dump instead the files symlinks point to
-h, --dereference
don't dump symlinks; dump the files they point to
实践如下:
[root@test tmp]# tar --help|grep dereference
-h, --dereference dump instead the files symlinks point to.
1)只打软链接进来不打真实文件:
tar -zcvf testtar-h.tar.gz testtar
2)打真实文件进来:
tar -zcvfh testtar-h.tar.gz testtar
小技巧:
其实用scp也就自动把软链接给过滤掉了,根本不留下软链接。
摘自:http://bbs.chinaunix.net/thread-1447388-1-1.html
实践成功如下,注意h位置,否则报错:
参考自:http://t.zoukankan.com/TreeDream-p-10277075.html
-h, --dereference dump instead the files symlinks point to
-h, --dereference
don't dump symlinks; dump the files they point to
实践如下:
[root@test tmp]# tar --help|grep dereference
-h, --dereference dump instead the files symlinks point to.
1)只打软链接进来不打真实文件:
tar -zcvf testtar-h.tar.gz testtar
2)打真实文件进来:
tar -zcvfh testtar-h.tar.gz testtar
小技巧:
其实用scp也就自动把软链接给过滤掉了,根本不留下软链接。
摘自:http://bbs.chinaunix.net/thread-1447388-1-1.html
实践成功如下,注意h位置,否则报错:
参考自:http://t.zoukankan.com/TreeDream-p-10277075.html
MacBook下的watch安装方法brew install watch, Linux 自带的 watchdog 的简介,Linux 软件看门狗 watchdog。
Unix/LinuxC技术 jackxiang 2014-10-9 20:58
MacBook下的watch安装方法brew install watch:
brew install watch (mac os)
https://www.jianshu.com/p/d75e50e38bb9
背景:
root@119.10.6.23:/usr/local/php# ps aux|grep watchdog
root 6 0.0 0.0 0 0 ? S Aug28 4:50 [watchdog/0]
root 10 0.0 0.0 0 0 ? S Aug28 4:11 [watchdog/1]
root 14 0.0 0.0 0 0 ? S Aug28 3:58 [watchdog/2]
root 18 0.0 0.0 0 0 ? S Aug28 3:36 [watchdog/3]
附:
最简单的安装教程(CentOS)
yum install watchdog -y
modprobe softdog
chkconfig watchdog on
/etc/init.d/watchdog start
配置看门狗程序,开机自动运行
chkconfig watchdog on
启动看门狗
sudo /etc/init.d/watchdog start
——————————————————————————————————————
Linux 自带了一个 watchdog 的实现,用于监视系统的运行,包括一个内核 watchdog module 和一个用户空间的 watchdog 程序。内核 watchdog 模块通过 /dev/watchdog 这个字符设备与用户空间通信。用户空间程序一旦打开 /dev/watchdog 设备(俗称“开门放狗”),就会导致在内核中启动一个1分钟的定时器(系统默认时间),此后,用户空间程序需要保证在1分钟之内向这个设备写入数据(俗称“定期喂狗”),每次写操作会导致重新设定定时器。如果用户空间程序在1分钟之内没有写操作,定时器到期会导致一次系统 reboot 操作(“狗咬人了”呵呵)。通过这种机制,我们可以保证系统核心进程大部分时间都处于运行状态,即使特定情形下进程崩溃,因无法正常定时“喂狗”,Linux系统在看门狗作用下重新启动(reboot),核心进程又运行起来了。多用于嵌入式系统。
打开 /dev/watchdog 设备(“开门放狗”):
每隔一段时间向 /dev/watchdog 设备写入数据(“定期喂狗”):
关闭 /dev/watchdog 设备,通常不需要这个步骤:
所需头文件:
转自:http://blog.csdn.net/liigo/article/details/9227205
摘自:http://bbs.linuxtone.org/thread-19567-1-1.html
摘自:http://wjjchen.blog.163.com/blog/static/1628722201342354415584/
brew install watch (mac os)
https://www.jianshu.com/p/d75e50e38bb9
背景:
root@119.10.6.23:/usr/local/php# ps aux|grep watchdog
root 6 0.0 0.0 0 0 ? S Aug28 4:50 [watchdog/0]
root 10 0.0 0.0 0 0 ? S Aug28 4:11 [watchdog/1]
root 14 0.0 0.0 0 0 ? S Aug28 3:58 [watchdog/2]
root 18 0.0 0.0 0 0 ? S Aug28 3:36 [watchdog/3]
附:
最简单的安装教程(CentOS)
yum install watchdog -y
modprobe softdog
chkconfig watchdog on
/etc/init.d/watchdog start
配置看门狗程序,开机自动运行
chkconfig watchdog on
启动看门狗
sudo /etc/init.d/watchdog start
——————————————————————————————————————
Linux 自带了一个 watchdog 的实现,用于监视系统的运行,包括一个内核 watchdog module 和一个用户空间的 watchdog 程序。内核 watchdog 模块通过 /dev/watchdog 这个字符设备与用户空间通信。用户空间程序一旦打开 /dev/watchdog 设备(俗称“开门放狗”),就会导致在内核中启动一个1分钟的定时器(系统默认时间),此后,用户空间程序需要保证在1分钟之内向这个设备写入数据(俗称“定期喂狗”),每次写操作会导致重新设定定时器。如果用户空间程序在1分钟之内没有写操作,定时器到期会导致一次系统 reboot 操作(“狗咬人了”呵呵)。通过这种机制,我们可以保证系统核心进程大部分时间都处于运行状态,即使特定情形下进程崩溃,因无法正常定时“喂狗”,Linux系统在看门狗作用下重新启动(reboot),核心进程又运行起来了。多用于嵌入式系统。
打开 /dev/watchdog 设备(“开门放狗”):
每隔一段时间向 /dev/watchdog 设备写入数据(“定期喂狗”):
关闭 /dev/watchdog 设备,通常不需要这个步骤:
所需头文件:
转自:http://blog.csdn.net/liigo/article/details/9227205
摘自:http://bbs.linuxtone.org/thread-19567-1-1.html
摘自:http://wjjchen.blog.163.com/blog/static/1628722201342354415584/
背景:在用c获取root后,执行一个命令退出时,报exit logout TERM environment variable not set.
# to avoid the error: TERM environment variable not set.
#
TERM=linux
export TERM
clear
摘自:http://bbs.chinaunix.net/thread-2070668-1-1.html
# to avoid the error: TERM environment variable not set.
#
TERM=linux
export TERM
clear
摘自:http://bbs.chinaunix.net/thread-2070668-1-1.html
如何让环境变量能够通过sudo传递进去。
Unix/LinuxC技术 jackxiang 2014-10-9 13:29
【解决方案】
在/etc/sudoers中修改:
Defaults env_reset
为:
Defaults !env_reset
一)这样,任何环境变量都可以通过sudo传进去了。
二)那你就把变量写到那个脚本里面去好了,sudo肯定是不会带这个用户的变量过去的,因为两个用户不一样,除非你通过sudo的时候加export去携带。
三)su - -c "命令集"
不过我希望的是,能够不改我的脚本,通过修改系统配置的方式把环境变量传进去。
以前好像通过在/etc/sudoers中配置env_reset和env_keep的方式搞定过。。。
那你直接写到/etc/profile里面不就得了
搞定了!在/etc/sudoers中修改:
Defaults env_reset
为:
Defaults !env_reset
这样,任何环境变量都可以通过sudo传进去了。
来自:http://bbs.chinaunix.net/thread-1920936-1-1.html
在/etc/sudoers中修改:
Defaults env_reset
为:
Defaults !env_reset
一)这样,任何环境变量都可以通过sudo传进去了。
二)那你就把变量写到那个脚本里面去好了,sudo肯定是不会带这个用户的变量过去的,因为两个用户不一样,除非你通过sudo的时候加export去携带。
三)su - -c "命令集"
不过我希望的是,能够不改我的脚本,通过修改系统配置的方式把环境变量传进去。
以前好像通过在/etc/sudoers中配置env_reset和env_keep的方式搞定过。。。
那你直接写到/etc/profile里面不就得了
搞定了!在/etc/sudoers中修改:
Defaults env_reset
为:
Defaults !env_reset
这样,任何环境变量都可以通过sudo传进去了。
来自:http://bbs.chinaunix.net/thread-1920936-1-1.html
由于我国的宽带基础设施太差,很多人都还停留在拨号上网时代,比如我家。每次开机还得另外点一下宽带连接才能上网真是挺麻烦的,我妈的电脑水平也不高,设置一个开机自动拨号还是很有必要的。下面我写出4种Windows7开机启动自动拨号上网的方法,大家根据自己的情况来选择使用。
自动宽带拨号连接上网
Windows7要实现开机启动自动拨号上网功能,要按下面的说明先设置一下。进入 控制面板->网络->网络和共享中心->更改适配器设置->宽带连接->属性,按下图进行设置。
拖进启动菜单进行开机启动
来自:http://www.ipc.me/win7-auto-dial.html
自动宽带拨号连接上网
Windows7要实现开机启动自动拨号上网功能,要按下面的说明先设置一下。进入 控制面板->网络->网络和共享中心->更改适配器设置->宽带连接->属性,按下图进行设置。
拖进启动菜单进行开机启动
来自:http://www.ipc.me/win7-auto-dial.html
phpdbg 作为一个交互式集成的调试器SAPI,安装扩展到PHP5.6.0里。
Php/Js/Shell/Go jackxiang 2014-10-4 10:01
背景:以前调试PHP如CPU100%发生在哪儿,用GDB,现在PHP自己带了一个PHPGDB,方便调试。
root@119.10.6.23:/data/codesdev/phpServer# php test.php
root@119.10.6.23:/data/software/lnmp1.1-full/php-5.6.0# ps aux|grep test.php
root 4071 1.3 1.5 350356 92040 pts/1 S+ 11:37 0:00 php test.php
cli方式执行php脚本,加入执行的进程号为4071。我们使用gdb命令来调试进程。
root@119.10.6.23:/data/software/lnmp1.1-full/php-5.6.0# gdb -p 4071
(gdb) print (char *)executor_globals.active_op_array->filename
$1 = 0x2ad61b4c8c48 "/data/codesdev/phpServer/test.php"
(gdb) print (char *)executor_globals.active_op_array->function_name
$2 = 0x2ad61b4c8d50 "test1"
(gdb) print executor_globals->current_execute_data->opline->lineno
$3 = 4
(gdb) print executor_globals->current_execute_data->opline->lineno
$4 = 4
很显然,他正在执行第四行的sleep方法。
如果上面的方法你感觉麻烦,那你可以使用.gdbinit文件。这个文件在php源码的根目录下。使用方法如下:
题外话:
从php5.6开始,php中集成了一个phpdbg的工具。可以像gdb调试c语言程序一样,调试php程序。感兴趣的话,可以打开下面的连接看看。
https://wiki.php.net/rfc/phpdbg
http://phpdbg.com/docs
来自:http://www.searchtb.com/2014/04/当cpu飙升时,找出php中可能有问题的代码行.html
————————————————————————————————————————————————————————————
phpdbg 作为一个交互式集成的调试器SAPI:
http://phpdbg.com/
Download:
https://codeload.github.com/krakjoe/phpdbg/legacy.zip/v0.4.0
Unzip:
root@119.10.6.23:/data/software/lnmp1.1-full/php-5.6.0/ext/krakjoe-phpdbg-cee9645#
http://phpdbg.com/docs
Installation
To install phpdbg, you must compile the source against your PHP installation sources, and enable the SAPI with the configure command.
cd /usr/src/php-src/sapi
git clone https://github.com/krakjoe/phpdbg
cd ../
./buildconf --force
./config.nice
make -j8
make install-phpdbg
phpdbg Felipe Pena, Joe Watkins, Bob Weinand
Command Line Options
The following switches are implemented (just like cli SAPI):
-n ignore php ini
-c search for php ini in path
-z load zend extension
-d define php ini entry
The following switches change the default behaviour of phpdbg:
-v disables quietness
-s enabled stepping
-e sets execution context
-b boring - disables use of colour on the console
-I ignore .phpdbginit (default init file)
-i override .phpgdbinit location (implies -I)
-O set oplog output file
-q do not print banner on startup
-r jump straight to run
-E enable step through eval()
Note: passing -rr will cause phpdbg to quit after execution, rather than returning to the console
root@119.10.6.23:/data/codesdev/phpServer# php test.php
root@119.10.6.23:/data/software/lnmp1.1-full/php-5.6.0# ps aux|grep test.php
root 4071 1.3 1.5 350356 92040 pts/1 S+ 11:37 0:00 php test.php
cli方式执行php脚本,加入执行的进程号为4071。我们使用gdb命令来调试进程。
root@119.10.6.23:/data/software/lnmp1.1-full/php-5.6.0# gdb -p 4071
(gdb) print (char *)executor_globals.active_op_array->filename
$1 = 0x2ad61b4c8c48 "/data/codesdev/phpServer/test.php"
(gdb) print (char *)executor_globals.active_op_array->function_name
$2 = 0x2ad61b4c8d50 "test1"
(gdb) print executor_globals->current_execute_data->opline->lineno
$3 = 4
(gdb) print executor_globals->current_execute_data->opline->lineno
$4 = 4
很显然,他正在执行第四行的sleep方法。
如果上面的方法你感觉麻烦,那你可以使用.gdbinit文件。这个文件在php源码的根目录下。使用方法如下:
题外话:
从php5.6开始,php中集成了一个phpdbg的工具。可以像gdb调试c语言程序一样,调试php程序。感兴趣的话,可以打开下面的连接看看。
https://wiki.php.net/rfc/phpdbg
http://phpdbg.com/docs
来自:http://www.searchtb.com/2014/04/当cpu飙升时,找出php中可能有问题的代码行.html
————————————————————————————————————————————————————————————
phpdbg 作为一个交互式集成的调试器SAPI:
http://phpdbg.com/
Download:
https://codeload.github.com/krakjoe/phpdbg/legacy.zip/v0.4.0
Unzip:
root@119.10.6.23:/data/software/lnmp1.1-full/php-5.6.0/ext/krakjoe-phpdbg-cee9645#
http://phpdbg.com/docs
Installation
To install phpdbg, you must compile the source against your PHP installation sources, and enable the SAPI with the configure command.
cd /usr/src/php-src/sapi
git clone https://github.com/krakjoe/phpdbg
cd ../
./buildconf --force
./config.nice
make -j8
make install-phpdbg
phpdbg Felipe Pena, Joe Watkins, Bob Weinand
Command Line Options
The following switches are implemented (just like cli SAPI):
-n ignore php ini
-c search for php ini in path
-z load zend extension
-d define php ini entry
The following switches change the default behaviour of phpdbg:
-v disables quietness
-s enabled stepping
-e sets execution context
-b boring - disables use of colour on the console
-I ignore .phpdbginit (default init file)
-i override .phpgdbinit location (implies -I)
-O set oplog output file
-q do not print banner on startup
-r jump straight to run
-E enable step through eval()
Note: passing -rr will cause phpdbg to quit after execution, rather than returning to the console
在mysql数据库的err文件中看到如下信息:
Plugin 'FEDERATED' is disabled
InnoDB: The InnoDB memory heap is disabled
解决方法:vi /etc/my.cnf
tmpdir = /tmp
innodb_use_sys_malloc =0
重启问题解决?
这个参数是不是新的过时了呢?
InnoDB: Warning: Setting innodb_use_sys_malloc to FALSE is DEPRECATED. This option may be removed in future releases, together with the InnoDB's internal memory allocator.
InnoDB:警告:设置innodb_use_sys_malloc假是过时的。此选项可能会在未来的版本中删除,连同InnoDB的内存分配器。
[Note] Plugin 'FEDERATED' is disabled.
这个不用理会的,没事。
__________________________________________
在网上找到解决方案:
1、在MY.INI文件中的 [mysqld] 中增加一行tmpdir="D:/MySQL/data/"修改后,还是启动不了或者能启动但关机后又出现同样问题,接着我做了第二步,重启正常。
2、删除DATA目录下除数据库文件夹外的其他文件,重启mysql,问题解决.
上面办法我按做了但是不行,自己摸索出一个解决办法与上面差不多
第一步:只要删除MySQL目录下的ib_logfile0和ib_logfile1两个文件.
第二步:找出了无法启动的原因,MySQL在安装的时候不会自动初始tmpdir,临时文件目录,所以要在配置文件my.ini中添加tmpdir路径.
最后在my.ini中添加:
[mysqld]
#自己指定的临时文件目录
tmpdir="E:/Program Files/MySQL/MySQL Server 5.1/Temp/" //phpfensi.com
来自:http://www.phpfensi.com/mysql/20140927/6253.html
[root@jackxiang mysql]# ls ib_logfile
ib_logfile0 ib_logfile1 ib_logfile2
Plugin 'FEDERATED' is disabled
InnoDB: The InnoDB memory heap is disabled
解决方法:vi /etc/my.cnf
tmpdir = /tmp
innodb_use_sys_malloc =0
重启问题解决?
这个参数是不是新的过时了呢?
InnoDB: Warning: Setting innodb_use_sys_malloc to FALSE is DEPRECATED. This option may be removed in future releases, together with the InnoDB's internal memory allocator.
InnoDB:警告:设置innodb_use_sys_malloc假是过时的。此选项可能会在未来的版本中删除,连同InnoDB的内存分配器。
[Note] Plugin 'FEDERATED' is disabled.
这个不用理会的,没事。
__________________________________________
在网上找到解决方案:
1、在MY.INI文件中的 [mysqld] 中增加一行tmpdir="D:/MySQL/data/"修改后,还是启动不了或者能启动但关机后又出现同样问题,接着我做了第二步,重启正常。
2、删除DATA目录下除数据库文件夹外的其他文件,重启mysql,问题解决.
上面办法我按做了但是不行,自己摸索出一个解决办法与上面差不多
第一步:只要删除MySQL目录下的ib_logfile0和ib_logfile1两个文件.
第二步:找出了无法启动的原因,MySQL在安装的时候不会自动初始tmpdir,临时文件目录,所以要在配置文件my.ini中添加tmpdir路径.
最后在my.ini中添加:
[mysqld]
#自己指定的临时文件目录
tmpdir="E:/Program Files/MySQL/MySQL Server 5.1/Temp/" //phpfensi.com
来自:http://www.phpfensi.com/mysql/20140927/6253.html
[root@jackxiang mysql]# ls ib_logfile
ib_logfile0 ib_logfile1 ib_logfile2
查看mysql启动日志:
2014-10-01 11:08:45 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
这是数据库升级过程中,timestamp在5.6以前的数据库中默认not null,如果没有显示声明timestamp的默认值,那么该列用全0的”0000-00-00 00:00:00″作为默认值
加上还是会报这个问题,听说有一个坑,于是查了一下,这个Url有点用:http://cuelog.com/archives/4.html
如果初始化时出现
1 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
在mysql的安装根目录下生成的my.cnf中加入:
2 explicit_defaults_for_timestamp = true
还是报错,按mysql提示的执行下面的mysql启动命令:
按mysql的说明,接下来是执行:
3 ./bin/mysqld_safe --user=mysql --explicit_defaults_for_timestamp=1 &
——————————————————————————————————————————————
来自:
http://www.kankanews.com/ICkengine/archives/110105.shtml
http://www.williamsang.com/archives/818.html
2014-10-01 11:08:45 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
这是数据库升级过程中,timestamp在5.6以前的数据库中默认not null,如果没有显示声明timestamp的默认值,那么该列用全0的”0000-00-00 00:00:00″作为默认值
加上还是会报这个问题,听说有一个坑,于是查了一下,这个Url有点用:http://cuelog.com/archives/4.html
如果初始化时出现
1 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
在mysql的安装根目录下生成的my.cnf中加入:
2 explicit_defaults_for_timestamp = true
还是报错,按mysql提示的执行下面的mysql启动命令:
按mysql的说明,接下来是执行:
3 ./bin/mysqld_safe --user=mysql --explicit_defaults_for_timestamp=1 &
——————————————————————————————————————————————
来自:
http://www.kankanews.com/ICkengine/archives/110105.shtml
http://www.williamsang.com/archives/818.html
背景:skip-name-resolve 参数的目的是不再进行反解析(ip不反解成域名),这样可以加快数据库的反应时间。修改配置文件添加并需要重启:[mysqld] skip-name-resolve添加后发现错误日志有警告信息:
[root@jackxiang mysql]# vi my.cnf
skip-name-resolve
# 禁止MySQL对外部连接进行DNS解析,使用这一选项可以消除MySQL进行DNS解析的时间。但需要注意,如果开启该选项,
# 则所有远程主机连接授权都要使用IP地址方式,否则MySQL将无法正常处理连接请求
实践如下:
重启mysql,发现日志还有:
1)按提示作下查询,果然有一个空账户和root帐户的Host是jackxiang:
select * from user where Host="jackxiang"\G;
mysql> select Host,User,Password from user where Host="jackxiang";
+-----------+------+-----------------------------------------------------+
| Host | User | Password |
+-----------+------+-----------------------------------------------------+
| jackxiang | | |
| jackxiang |root | *2CD42BDFDF0EB0E*Z****3458EB72EE1F17F26F |
+-----------+------+------------------------------------------------------+
2)查下localhost,因为大都是限定本机连接,不让外面机器连接,确保安全:
mysql> select Host,User,Password from user where Host="localhost" limit 2;
+-----------+-----------------+-------------------------------------------+
| Host | User | Password |
+-----------+-----------------+-------------------------------------------+
| localhost | | |
| localhost | jack_mysql | *2CD42BDFDF0E***3458EB72EE1F17F26F |
+-----------+-----------------+-------------------------------------------+
3)把Host既是 jackxiang的,用户是空或root的Host修改为localhost:
mysql> update user set Host="localhost" where Host="jackxiang";
ERROR 1062 (23000): Duplicate entry 'localhost-' for key 'PRIMARY'
这样搞不行,得一个一个干掉,看有没有root同名的,查下:
mysql> select Host,User,Password from user where User="";
+-----------+------+----------+
| Host | User | Password |
+-----------+------+----------+
| localhost | | |
| jackxiang | | |
+-----------+------+----------+
mysql> delete from user where User="" and Password="";
Query OK, 2 rows affected (0.01 sec)
4)查下user为root的
mysql> select Host,User,Password from user where User="root";
+-----------+------+-------------------------------------------+
| Host | User | Password |
+-----------+------+-------------------------------------------+
| localhost | root | *2CD42BDFDF0EB0E1A7777777777EE1F17F26F |
| jackxiang | root | *2CD42BDFDF0EB0E1A7777777777EE1F17F26F |
| 127.0.0.1 | root | *2CD42BDFDF0EB0E1A7777777777EE1F17F26F |
| ::1 | root | *2CD42BDFDF0EB0E1A7777777777EE1F17F26F |
+-----------+------+-------------------------------------------+
5)留下localhost就足够了,其余删除掉:
mysql> delete from user where Host !="localhost" and User="root";
Query OK, 3 rows affected (0.00 sec)
6)restart mysql:
日志warning还有一个:
[Warning] 'proxies_priv' entry '@ root@jackxiang' ignored in --skip-name-resolve mode.
解决办法:
然后删除表mysql.proxies_priv中和cvs类似与具体域名有关的行,方法同上。
mysql> select Host,User,Proxied_host,Proxied_user,With_grant,Grantor,Timestamp from proxies_priv ;
+-----------+------+--------------+--------------+------------+---------+----------------+
| Host | User | Proxied_host | Proxied_user | With_grant | Grantor | Timestamp |
+-----------+------+--------------+--------------+------------+---------+----------------+
| localhost | root | | | 1 | | 2014-07-14 13:26:08 |
| jackxiang | root | | | 1 | | 2014-07-14 13:26:08 |
+-----------+------+--------------+--------------+------------+---------+----------------+
mysql> delete from proxies_priv where Host="jackxiang";
Query OK, 1 row affected (0.02 sec)
这下彻底清静了。
原来是当时安装mysql后,多次grant授权引起的,。
备注:
skip-name-resolve是禁用dns解析,避免网络DNS解析服务引发访问MYSQL的错误,一般应当启用。 启用后,在mysql的授权表中就不能使用主机名了,只能使用IP ,出现此警告是由于mysql 表中已经存在有 root@jackxiang 帐号信息。 我们把它删除就好了。 mysql>use mysql; mysql> delete from user where HOST='localhost.localdomain'; Query OK, 2 rows affected (0.00 sec) 重启MYSQL ,发现警告已经没有啦。
来自:http://www.dedecms.com/knowledge/data-base/mysql/2012/0819/7084.html
http://blog.itpub.net/14184018/viewspace-1061224/
[root@jackxiang mysql]# vi my.cnf
skip-name-resolve
# 禁止MySQL对外部连接进行DNS解析,使用这一选项可以消除MySQL进行DNS解析的时间。但需要注意,如果开启该选项,
# 则所有远程主机连接授权都要使用IP地址方式,否则MySQL将无法正常处理连接请求
实践如下:
重启mysql,发现日志还有:
1)按提示作下查询,果然有一个空账户和root帐户的Host是jackxiang:
select * from user where Host="jackxiang"\G;
mysql> select Host,User,Password from user where Host="jackxiang";
+-----------+------+-----------------------------------------------------+
| Host | User | Password |
+-----------+------+-----------------------------------------------------+
| jackxiang | | |
| jackxiang |root | *2CD42BDFDF0EB0E*Z****3458EB72EE1F17F26F |
+-----------+------+------------------------------------------------------+
2)查下localhost,因为大都是限定本机连接,不让外面机器连接,确保安全:
mysql> select Host,User,Password from user where Host="localhost" limit 2;
+-----------+-----------------+-------------------------------------------+
| Host | User | Password |
+-----------+-----------------+-------------------------------------------+
| localhost | | |
| localhost | jack_mysql | *2CD42BDFDF0E***3458EB72EE1F17F26F |
+-----------+-----------------+-------------------------------------------+
3)把Host既是 jackxiang的,用户是空或root的Host修改为localhost:
mysql> update user set Host="localhost" where Host="jackxiang";
ERROR 1062 (23000): Duplicate entry 'localhost-' for key 'PRIMARY'
这样搞不行,得一个一个干掉,看有没有root同名的,查下:
mysql> select Host,User,Password from user where User="";
+-----------+------+----------+
| Host | User | Password |
+-----------+------+----------+
| localhost | | |
| jackxiang | | |
+-----------+------+----------+
mysql> delete from user where User="" and Password="";
Query OK, 2 rows affected (0.01 sec)
4)查下user为root的
mysql> select Host,User,Password from user where User="root";
+-----------+------+-------------------------------------------+
| Host | User | Password |
+-----------+------+-------------------------------------------+
| localhost | root | *2CD42BDFDF0EB0E1A7777777777EE1F17F26F |
| jackxiang | root | *2CD42BDFDF0EB0E1A7777777777EE1F17F26F |
| 127.0.0.1 | root | *2CD42BDFDF0EB0E1A7777777777EE1F17F26F |
| ::1 | root | *2CD42BDFDF0EB0E1A7777777777EE1F17F26F |
+-----------+------+-------------------------------------------+
5)留下localhost就足够了,其余删除掉:
mysql> delete from user where Host !="localhost" and User="root";
Query OK, 3 rows affected (0.00 sec)
6)restart mysql:
日志warning还有一个:
[Warning] 'proxies_priv' entry '@ root@jackxiang' ignored in --skip-name-resolve mode.
解决办法:
然后删除表mysql.proxies_priv中和cvs类似与具体域名有关的行,方法同上。
mysql> select Host,User,Proxied_host,Proxied_user,With_grant,Grantor,Timestamp from proxies_priv ;
+-----------+------+--------------+--------------+------------+---------+----------------+
| Host | User | Proxied_host | Proxied_user | With_grant | Grantor | Timestamp |
+-----------+------+--------------+--------------+------------+---------+----------------+
| localhost | root | | | 1 | | 2014-07-14 13:26:08 |
| jackxiang | root | | | 1 | | 2014-07-14 13:26:08 |
+-----------+------+--------------+--------------+------------+---------+----------------+
mysql> delete from proxies_priv where Host="jackxiang";
Query OK, 1 row affected (0.02 sec)
这下彻底清静了。
原来是当时安装mysql后,多次grant授权引起的,。
备注:
skip-name-resolve是禁用dns解析,避免网络DNS解析服务引发访问MYSQL的错误,一般应当启用。 启用后,在mysql的授权表中就不能使用主机名了,只能使用IP ,出现此警告是由于mysql 表中已经存在有 root@jackxiang 帐号信息。 我们把它删除就好了。 mysql>use mysql; mysql> delete from user where HOST='localhost.localdomain'; Query OK, 2 rows affected (0.00 sec) 重启MYSQL ,发现警告已经没有啦。
来自:http://www.dedecms.com/knowledge/data-base/mysql/2012/0819/7084.html
http://blog.itpub.net/14184018/viewspace-1061224/
php-fpm 配置不当 导致 nginx 502 错误一例
Php/Js/Shell/Go jackxiang 2014-10-1 00:07
背景:开php-fpm的9000端口,有时配置出错会出现502,特别转载。
不要总看nginx 的日志文件。
对于开端口这种事情,listen.allowed_clients 里逗号分割不能有空格!
[www]
listen = 10.11.80.49:9000
listen.allowed_clients = 10.11.80.47,10.11.80.48, 10.11.80.49
阅读全文
不要总看nginx 的日志文件。
对于开端口这种事情,listen.allowed_clients 里逗号分割不能有空格!
[www]
listen = 10.11.80.49:9000
listen.allowed_clients = 10.11.80.47,10.11.80.48, 10.11.80.49
阅读全文