分类 工作备忘 下的文章

越忙越见鬼,遇到奇怪的东西,实在吊诡。

php和mysql和phpmyadmin都未曾改动或升级,已使用一年有多。
今天登录 phpmyadmin 账号管理页面顶部提示

You do not have privileges to manipulate with the users!

看首页右侧登录信息,确认是 root账号没错,不过显示的是 root@ 而不是 root@localhost

QQ截图20200702235006.jpg

(截图不能重现)

注销重新登录无效;
重启 LNMP服务无效;
换浏览器登录无效;
尝试根据一些别人的文章去修改设置,也没有得到预期的效果(更糟了,部分库变得不能访问,还好有备份赶紧还原)。

ssh上服务器用命令行进mysql 执行账号操作,被提示 grant 操作不支持

The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

又查了一下别人的解决办法,用下面的命令解决(但似乎无关)

mysql> flush privileges;

后来发现更诡异的事情,视乎我用错误的账号和密码都可以登录.
额——

于是去查看最初的备忘,发现这个数据库的初始密码确实不是常用的,也无从考究最初是谁部署的
用正确的密码登录...发现一切都好了

难道问题只是因为浏览器的cookie登录,导致的权限问题? 不得而知
法克!讨厌这种绕了一大圈问题消失了而不是解决了的便秘感。


参考文

先扔参考文链接

windows直接上传带文件名带中文的文件到linux, linux 系统的字符编码默认是utf-8。
文件名的中文部分会显示乱码,且在把文件名 print 出来时 一定概率会触发 一个 UnicodeEncodeError 异常 提示 surrogates not allowed

def bad_filename(filename):
    return repr(filename)[1:-1]

try:
    print(filename)
except UnicodeEncodeError:
    print(bad_filename(filename))

对异常文件处理可以根据自己需要制定策略,例如 os.rename 过滤掉汉字部分,或 更彻底用 uuid.uuid1() 赋予新文件名。

演示地址: https://gen8.orz.com.cn/beta/bg180/

应需求方的要求,在页面增加一些动态元素增加引导交互效果。

关键在于 CSS的animation(keyframes) 和 background-position 两个属性组合

animation: anibg 13s ease-in-out infinite;

……

@keyframes anibg {
    0% {background-position: left center;}
    50% {background-position: right center;}
    100% {background-position: left center;}
}

运行了几个python后台守护进程,需要重启的时候不能简单 killall python 很容易会误杀其他服务
所以备忘以下的脚本

已验证有效

#!/bin/sh

function PidFind()  
{
    PIDCOUNT=`ps -ef | grep $1 | grep -v "grep" | grep -v $0 | awk '{print $2}' | wc -l`;  

    if [ ${PIDCOUNT} -gt 1 ] ; then  
        echo "There are too many process contains name[$1]"  
    elif [ ${PIDCOUNT} -le 0 ] ; then  
        echo "No such process[$1]!"  
    else  
        PID=`ps -ef | grep $1 | grep -v "grep" | grep -v ".sh" | awk '{print $2}'` ;  
        echo "Find the PID of this progress!--- process:$1 PID=[${PID}] ";  

        echo "Kill the process $1 ...";          
        kill -9  ${PID};  
        echo "kill -9 ${PID} $1 done!";  
    fi  
}
#查找并kill掉 带有 newdoc.daemon 名称的进程
PidFind newdoc.daemon

#restart daemon
/path/to/startscript/chkdaemon.sh

当搜索结果不唯一时,脚本也会拒绝执行杀进程

参考文:https://jingyan.baidu.com/article/b7001fe1a5dbc40e7382dd75.html

对于没有运行错误的脚本却发生了高负载、无响应、堵塞或死循环等问题。从进程只能看到异常 php-fpm 存在。需要具体了解详情可以做一下操作

找到 php-fpm.conf 所在路径,编辑之

find / -name php-fpm.conf

查找结果: /usr/local/php/etc/php-fpm.conf

vi /usr/local/php/etc/php-fpm.conf

查看(无则添加)slowlog 值 ,将 request_slowlog_timeout 设为 非0 (0 代表不记录慢日志)
举例如下

...
request_slowlog_timeout = 5s
slowlog = var/log/slow.log

保存,重启 php-fpm
跟踪慢日志

lnmp php-fpm restart
tail -f /usr/local/php/var/log/slow.log

日志会定位到发生运行缓慢的第几行什么命令