git clone https://github.com/dufferzafar/netuse /usr/local/netuse
cd /usr/local/netuse
cp config.py.example config.py
ln -s netuse.py /usr/bin/netuse

Crontab:



vi /usr/bin/netuse
#!/usr/bin/python3  
不存在python3怎么办?
ln -s /usr/bin/python /usr/bin/python3


vi /usr/local/netuse/dumper 把网卡修改成自己的网卡eth1:
# which registers itself as a ppp device.
echo $(cat /sys/class/net/ppp0/statistics/rx_bytes)";"$(date +%s) >> ~/.net/$year/$month/down/$date                                                          
echo $(cat /sys/class/net/ppp0/statistics/tx_bytes)";"$(date +%s) >> ~/.net/$year/$month/up/$date
修改为:

修改为:eth1


标准统计(主要看看vps一天多少流量):
[root@iZ25z0ugwgtZ netuse]# netuse
Downloaded:        5 MB
Uploaded:          0 MB

Data Left:      10235 MB
Days Left:         3 Days
End Date:       2016-06-29 (11:59 PM)

Suggested:      3411 MB (Per Day)

一周一瞥(好像有点问题):
[root@iZ25z0ugwgtZ netuse]# netuse -w
Data downloaded this week:

Traceback (most recent call last):
  File "/bin/netuse", line 277, in <module>
    weekly()
  File "/bin/netuse", line 186, in weekly
    format="{:>5.0f}",
  File "/usr/local/netuse/termgraph.py", line 56, in chart
    print_blocks(labels[i], data[i], step, args)
  File "/usr/local/netuse/termgraph.py", line 63, in print_blocks
    blocks = int(count / step)
ZeroDivisionError: integer division or modulo by zero
背景:在windows下提交了一个git更新,想在linux下强制更新(这个linux下的文件也被我改动了),以windows下提交的为准怎么办?还会出错,如下:
Git pull 强制覆盖本地文件,与在git bash下实践OK,AddTime:2016-9-29

来自:http://blog.csdn.net/baple/article/details/49872765


一)出错:
新增文件add commit后,push回原分支失败,报错:
  Counting objects: 20, done.
  Delta compression using up to 24 threads.
  Compressing objects: 100% (11/11), done.
  Writing objects: 100% (11/11), 1.30 KiB, done.
  Total 11 (delta 5), reused 0 (delta 0)
  error: insufficient permission for adding an object to repository database ./objects


二)git本地有修改如何强制更新到远程:
本地有修改和提交,如何强制用远程的库更新更新。我尝试过用git pull -f,总是提示 You have not concluded your merge. (MERGE_HEAD exists)。
我需要放弃本地的修改,用远程的库的内容就可以,应该如何做?傻傻地办法就是用心的目录重新clone一个,正确的做法是什么?

正确的做法应该是:
git fetch --all
git reset --hard origin/master
git fetch 只是下载远程的库的内容,不做任何的合并git reset 把HEAD指向刚刚下载的最新的版本

参考链接:

http://stackoverflow.com/questions/1125968/force-git-to-overwrite-local-files-on-pull
背景:对chkconfig还没用熟悉又来了一个新的,systemctl里的启动参位位置。

来自:https://www.liquidweb.com/kb/how-to-install-memcached-on-fedora-20/

systemctl 命令完全指南:https://linux.cn/article-5926-1.html


rpm -qf  /usr/bin/systemctl
systemd-219-19.el7_2.11.x86_64

yum remove systemd-219-19.el7_2.11  -y
错误:尝试移除受保护的 "systemd",为嘛不让卸载??



我们对service和chkconfig两个命令都不陌生,systemctl 是管制服务的主要工具, 它整合了chkconfig 与 service功能于一体。

systemctl is-enabled iptables.service
systemctl is-enabled servicename.service #查询服务是否开机启动
systemctl enable vsftpd.service #开机运行服务
systemctl disable vsftpd.service #取消开机运行
systemctl start vsftpd.service #启动服务
systemctl stop vsftpd.service #停止服务
systemctl restart vsftpd.service #重启服务
systemctl reload vsftpd.service #重新加载服务配置文件
systemctl status vsftpd.service #查询服务运行状态
systemctl --failed #显示启动失败的服务

注:*代表某个服务的名字,如http的服务名为httpd


例如在CentOS 7 上安装http

[root@CentOS7 ~]# yum -y install httpd
启动服务(等同于service httpd start)
systemctl start httpd.service
停止服务(等同于service httpd stop)
systemctl stop httpd.service
重启服务(等同于service httpd restart)
systemctl restart httpd.service
查看服务是否运行(等同于service httpd status)
systemctl status httpd.service
开机自启动服务(等同于chkconfig httpd on)
systemctl enable httpd.service
开机时禁用服务(等同于chkconfig httpd on)
systemctl disable httpd.service
查看服务是否开机启动 (等同于chkconfig --list)

来自:http://www.linuxidc.com/Linux/2014-11/109236.htm
内存不够的问题会很多:
1) 涉及到编译msyql啥的,会导致内存不够:
http://jackxiang.com/post/8677/
2)买的vps本来内存就小:
http://jackxiang.com/post/8529/
———————————————————————
怀疑Linux上某些进程有内存泄漏,怎么看?

vmstat 1  看下si so,如果长期是0,就不用管了:
(看说明都是vmstat查出来的swpd代表swap的使用量,si、so表示交换分区和内存的写入、写出的量)


[root@iZ25z0ugwgtZ config]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
0  1 494088  33764    220 457276  904  731  1106   737  245  540  1  0 93  6  0

si  每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。我的机器内存充裕,一切正常。
so  每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上。

《深入理解linux内核》,很薄的一本,里面有详细说明。。。
背景:在centos7下安装gitlab时需要这个库,为此,先作个记录。
EPEL 是yum的一个软件源,里面包含了许多基本源里没有的软件了,但在我们在使用epel时是需要安装它才可以了,下文来介绍CentOS7/RHEL7安装EPEL步骤

EPEL,即Extra Packages for Enterprise Linux的简称,是为企业级Linux提供的一组高质量的额外软件包,包括但不限于Red Hat Enterprise Linux (RHEL), CentOS and Scientific Linux (SL), Oracle Enterprise Linux (OEL)。(关于 : EPEL)
为CentOS7/RHEL7安装EPEL 仓库(repo)
方法一:命令安装

[root@idoseek ~]# yum -y install epel-release
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.unifiedlayer.com
* extras: mirrors.kernel.org
* updates: mirrors.syringanetworks.net
正在解决依赖关系
--> 正在检查事务
---> 软件包 epel-release.noarch.0.7-2 将被 安装
--> 解决依赖关系完成

依赖关系解决

====================================================================================================
Package                     架构                  版本                 源                     大小
====================================================================================================
正在安装:
epel-release                noarch                7-2                  extras                 13 k

事务概要
====================================================================================================
安装  1 软件包

总下载量:13 k
安装大小:22 k
Downloading packages:
epel-release-7-2.noarch.rpm                                                  |  13 kB  00:00:00    
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : epel-release-7-2.noarch                                                         1/1
  验证中      : epel-release-7-2.noarch                                                         1/1

已安装:
  epel-release.noarch 0:7-2                                                                        

完毕!
[root@idoseek ~]#
方法二:手动安装
针对系统架构选择相应的类型:http://dl.fedoraproject.org/pub/epel/7/。我们使用的x86_64,就要进入该目录下寻找相应包,安装方法如下:

# rpm -vih http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-2.noarch.rpm
或者:

# wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-2.noarch.rpm
# rpm -vih epel-release-7-2.noarch.rpm
更新包缓存
此时我们发现/etc/yum.repos.d/下多了两个epel的repo文件:

[root@idoseek ~]# ll /etc/yum.repos.d/
总用量 28
-rw-r--r-- 1 root root 1664 8月  22 12:21 CentOS-Base.repo
-rw-r--r-- 1 root root  649 8月  22 12:21 CentOS-Debuginfo.repo
-rw-r--r-- 1 root root  290 8月  22 12:21 CentOS-fasttrack.repo
-rw-r--r-- 1 root root 1331 8月  22 12:21 CentOS-Sources.repo
-rw-r--r-- 1 root root  156 8月  22 12:21 CentOS-Vault.repo
-rw-r--r-- 1 root root  957 9月   2 12:14 epel.repo
-rw-r--r-- 1 root root 1056 9月   2 12:14 epel-testing.repo
更新元数据缓存:
[root@idoseek ~]# yum clean all && yum makecache

来自:http://www.111cn.net/sys/CentOS/85450.htm
背景:对于死锁的问题,人们往往想到出现一些关于访问很缓慢,有白页现象,要是测试环境(我就真实遇到测试环境有本文谈及一样的问题)你也就重启一下PHP的php-fpm进程发现又好了,隔一段时间又出类似的问题,你会看下日志,你会发现有很多日志是“Max execution timeout of 60 seconds exceeded”,你会发现这可能是一些php的守护进程导致的,你为了解决测试环境的问题,于是觉得应该把那个php-fpm的进程数开多点,可能会好一些,于是你开多了,一直没有面对这个问题的原因,为什么呢,因为公司装PHP的是运维装的,你没有办法或时间去装一个debug版本的php,你说这个问题让运维的人来查,你觉得能查出来?So,这个问题一拖再拖,但就是没解决,但是有一天你发现磁盘满了,用du去看整体时发现满了,但是如果一个个目录去看发现并没有占用多少,也万万没有想到PHP的死锁还会导致磁盘空间占用太多,上面这种情况我就真实遇到过,后来重新reboot操作系统,磁盘又回来了,所以,我认为是一篇好文章,所以转了此文,也想说明对于PHP的扩展这方面代码质量把关需要严格,再就是PHP本身关于锁这块要弱化(除开cookie/session和cache锁外,其它能不用就不用),尽可能少用锁,这是博主一点小看法,同时把那些比如发短信啥的能异步的给用swoole异步了(这儿有点广告嫌疑),解放出php-fpm进程,防止因为阻塞导致hold住了PHP的php-fpm进程,像php下面的队列demon这种,能单独放就单独放一台机器隔离开,减少出现错误和问题的各种猜忌影响判断,下面言归正传。


引子:
本期我们邀请到了 云盘服务端 团队的技术达人- 徐铁成,一个隐蔽已久的PHP死锁问题被层层掘出,感谢铁成为我们带来这次畅快的体验,小伙伴们,准备好这次技术之旅了么?
---------------
发现问题
近期发现线上很多机器的磁盘空间报警, 且日志文件已经清理,但是磁盘空间没有释放。通过ps aux | grep php-cgi 发现, 很多进程的启动时间在几天到几周甚至几个月之前。我们线上的php-cgi都有最大执行次数的。一般在1天内都会重启一次。初步结论,这些cgi进程有问题。
通过lsof -p [pid] 发现, 启动时间很久的cgi进程中打开了一些日志文件句柄,并且没有关闭。这些日志文件在文件系统中已经删除了。但是句柄没关闭,导致磁盘空间没有释放。到此,磁盘空间异常的问题基本确定。是由于cgi没有关闭文件句柄造成的。
进一步分析进程, strace -p [pid], 发现所有异常的进程都阻塞与 fmutex 状态。换句话所,异常的cgi进程死锁了。进程死锁导致打开的文件句柄没有关闭,所以导致磁盘空间异常。

为什么cgi进程会死锁呢?

什么是死锁
学过操作系统的通同学,都了解多线程的概念。在多线程中访问公共资源,需要对资源加锁。访问结束后,释放锁。如果没有释放锁,那么下一个线程来获取资源的时候就会永远都无法获取资源的锁,于是这个线程死锁了。那么CGI是多线程的公共资源访问导致的死锁吗? 答案是NO。
1. CGI 是单线程进程,通过ps 就能看到。(进程状态 Sl的才是多线程进程)。
2. 即使是多线程的,死锁发生在PHP的shutdown过程中调用glibc 中time 函数的位置,不是php模块造成的。而glibc 中的time相关函数是线程安全的,不会产生死锁。

那是什么导致的死锁呢?
通过分析linux中死锁产生的机制,发现除了多线程会产生死锁外,信号处理函数同样会产生死锁。那么cgi是由于信号处理导致的死锁吗?在这之前介绍一个感念。

函数的可重入性与信号安全
函数可重入是指,无论第几次进入该函数,函数都能正常执行并返回结果。那么线程安全函数是可重入的吗?答案是NO。 线程安全函数,在第一次访问公共资源时,会获取全局锁。如果函数没有执行完成,锁还没释放,此时进程被中断。那么在中断处理函数中,再次访问该函数,就会产生死锁。那么什么样的函数才可以在中断处理函数中访问呢? 除了没有使用全局锁的函数,还有一些signal safe的系统调用可以使用。调用任何其他的非signal safe的函数都会产生不可预知的后果(比如 死锁)。 详见 man signal。在分析死锁的原因前,我们先看看cgi执行的流程,分析其中有没有产生死锁的可能。

PHP-CGI的执行流程
Glibc中的时间函数使用到了全局锁,保证函数的线程安全,但没有保证信号安全(signal safe)。经过之前的分析,我们初步怀疑死锁是由于PHP-CGI进程接收到了一个信号,然后在signal handle中执行了非signal safe的函数。主流程在中断前,正在执行glibc中的时间函数。在函数获取的锁没释放前,进入中断流程。而中断过程中又访问了glibc中的时间函数。于是导致了死锁。
PHP-CGI的执行流程,如下图所示:
点击在新窗口中浏览此图片
进一步分析发现,所有死锁的cgi进程的sapi_global中都记录了一个错误信息
“Max execution timeout of 60 seconds exceeded”.
60s 是我们php-cgi中设置执行超时。所以我们确认了,cig在执行过程中的确产生了超时异常,然后由于longjmp进入了shutdown过程。在shutdown过程中访问了glibc中的时间函数。导致了死锁。
void zend_set_timeout(long seconds)
{
TSRMLS_FETCH();

EG(timeout_seconds) = seconds;
if(!seconds) {
return;
}
……

setitimer(ITIMER_PROF, &t_r, NULL);
signal(SIGPROF, zend_timeout); // 此处会调用zend异常处理函数
sigemptyset(&sigset);
sigaddset(&sigset, SIGPROF);

……
}
通过gdb调试发现,所有PHP-CGI都阻塞在zend_request_shutdown中。zend_request_shutdown会调用用户自定义的php脚本中实现的shutdown函数。如果CGI执行超市,那么定时器会产生SIGPROF信号使执行流程中断。如果此时脚本刚好处于调用时间函数的状态,且还没有释放锁资源。然后执行流程进入了 timeout 函数,继续跳转到zend_request_shutdown。此时如果自定义的shutdown函数中访问了时间函数。就会产生死锁。我们从代码中找到了证据:
register_shutdown_function ('SimpleWebSvc:: shutdown’);
我们在php代码中使用qalarm系统,qalarm系统会在cgi执行结束(shutdown)的时候,注入一个钩子函数,来分析cgi执行是否正常,如果不正常,则发送报警信息。而刚好qalarm的报警处理函数中访问了时间函数。于是就有一定的概率产生死锁。

结论
通过上面的分析,我们找到了cgi死锁产生的原因,是应为在signal handler中使用了非signal safe的函数,导致了死锁。

解决办法
去掉或简化qalarm注册到shutdown中的钩子函数。避免不安全的函数调用。

来自:http://www.v2gg.com/lady/shishangzixun/20140924/57266.html
每天早上2-3小时shell论坛,今天终于把精华帖子恳完了,放点好脚本给各位,学shell上cu,没事逛逛论坛,心情好的时候看看精华贴.进步那真是飞一般的感觉.
不过新手最好还是先潜水一个月,在开始发帖回帖.最近论坛帖子质量严重下降都是1+1=?.
zj@zj:~/Script/cushell/08.11.04$ cat checkip.sh

解释下:
grep -Eq '[^0-9.]|^\.|\.$|^0*\.|\.\.'
[^0-9.]是不是有除了0-9与.之外的字符
^\.|\.$  以.开头 or 以.结尾
^0*\.|\.\. 以0开头 or 连续两个.
以上三种情况都是错误的哦,所以就printerr

echo -e "${IP//./\n}" | wc -l说实话前面那种替换我也是first time.就是讲.替换为换行,3个点就是4行了哦.不是3个点也就printerr

$((10#$i/8)) -gt 31 这个就是判断是不是<=255的了,当然你也可以自己修改成$i -gt 255

OK解释完毕^_^
zj@zj:~/Script/cushell/08.11.04$ ./checkip.sh 1.2.3.4
1.2.3.4 is
zj@zj:~/Script/cushell/08.11.04$ ./checkip.sh 01.2.3.4
incorrect IP format.
Your IP: a.b.a.d
incorrect IP format.
Your IP: 266.1.1.1
incorrect IP format.
Your IP: 244.255.255.255
244.255.255.255 is

来自:http://blog.chinaunix.net/uid-9950859-id-98351.html
更复杂的且更精确的判断:http://www.shangxueba.com/jingyan/1898546.html
Swoole在实际项目中的应用
[PHPer]Swoole在实际项目中的应用(不讲入门,只有实战)
2016年6月18日 13:30 ~ 2016年6月18日 17:00
(北京海淀)中关村海龙大厦办公楼17层(星巴克咖啡北侧办公大厅入口)
限额100人
本次活动由Swoole框架内核开发者王晶(网名半桶水,人称桶哥)发起,由优才学院、内聘网联合主办。
[活动对象]
本次活动针不讲入门只讲实战,我们希望你:
1、PHPer,一年以上
2、对Swoole了解或者应用过
3、对开源项目感兴趣,并持续关注开源项目

发起当天就有70多人参加,欢迎你的加入。


报名链接:
http://www.huodongxing.com/event/5337738177600

win:
findstr /s /i /n /d:D:\ "hahaha" *.txt //寻找D盘下所有包含hahaha的txt文件

linux:
find /var/www -name "*.*" | xargs grep "pass" //从www目录开始查找所有包含pass的文件
#其中按进程统计句柄数 第一列是打开的句柄数,第二列是进程ID。
lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr
#其中按句柄类型统计句柄数 其中REG代表文件
lsof -n|awk '{print $5}'|sort|uniq -c|sort -nr
#查看总共文件句柄数
lsof|wc -l
#查看网络句柄数 和用netstat统计一样,原理是:linux中一切皆文件(内存、网络、硬盘。。。)
lsof |grep IPv4|wc -l
lsof |grep TCP|wc -l

来自:https://blog.csdn.net/bolg_hero/article/details/77622616
=======================================================================================
背景:有时候出现句柄数不够用的情况,得用awk去统计一下各个进程的句柄数之和是否超过设置的句柄数了,cat /tmp/runProNumFds.txt | awk '{a=a+$1}END{print a}' ,这样好再次重新设置一下句柄的值。
ulimit -n
65535

----查看当前进程打开了多少句柄数

# lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|more


压力测试时一看这些句柄数的一个情况,如下:
lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr
1063 23973
1030 23975
739 23972
522 23971
139 64672
136 3569
136 3568
136 3454
136 3450
136 3449


lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr >> /tmp/runProNumFds.txt
简单的把第1列加起来:
cat /tmp/runProNumFds.txt | awk '{a=a+$1}END{print a}'
47465
Awk求和参考自:http://blog.sina.com.cn/s/blog_710844930100pzxj.html

ps aux|grep -E "23975|23972|23973|64672"
root      4374  0.0  0.0 103316   880 pts/1    S+   17:25   0:00 grep -E 23975|23972|23973|64672
www      23972  2.2  0.1  65656 22788 ?        S    15:09   3:00 nginx: worker process                                          
www      23973  3.1  0.1  65656 22784 ?        S    15:09   4:16 nginx: worker process                                          
www      23975  1.9  0.1  65656 22780 ?        S    15:09   2:39 nginx: worker process                                          
root     64672  0.3  0.0 576792  6536 ?        Ss   17:09   0:03 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)  
============================================================================


背景:做一些大量的句柄打开的操作,很有必要看到底打开了多少。如inodity监控啥的。
[root@mongodb11 ~]# ulimit -a
                     ......
open files                      (-n) 1024
                     ......


----查看当前进程打开了多少句柄数
# lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|more
131 24204 
57 24244  
57 24231   ........
其中第一列是打开的句柄数,第二列是进程ID。





---查看系统默认的最大文件句柄数,系统默认是1024

# ulimit -n

1024



----查看当前进程打开了多少句柄数

# lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|more

131 24204 

57 24244  

57 24231   ........

其中第一列是打开的句柄数,第二列是进程ID。

可以根据ID号来查看进程名。

# ps aef|grep 24204

nginx  24204 24162 99 16:15 ?    00:24:25 /usr/local/nginx/sbin/nginx -s



Linux有硬性限制和软性限制。可以通过ulimit来设定这两个参数。方法如下,以root用户运行以下命令:

# ulimit -HSn 4096

以上命令中,H指定了硬性大小,S指定了软性大小,n表示设定单个进程最大的打开文件句柄数量。个人觉得最好不要超过4096,毕竟打开的文件句柄数越多响应时间肯定会越慢。设定句柄数量后,系统重启后,又会恢复默认值。如果想永久保存下来,可以修改.bash_profile文件,可以修改 /etc/profile 把上面命令加到最后.

原文:http://leequery.blog.163.com/blog/static/1684220962010101023743567/

更多:http://liuzhigong.blog.163.com/blog/static/1782723752013817916611/
背景:我都之前说php7对wordpress提升不大,没有一个兄弟支持我,都说提升大,你看这文章,qq会员那边的一个实践更多证实了我的观点。

                                                                               ......
在benchmark(测试程序)中得到非常好的结果,实现JIT后性能比PHP5.5提升了8倍。然而,当他们把这个优化放入到实际的项目WordPress(一个开源博客项目)中,却几乎看不见性能的提升。原因在于测试项目的代码量比较少,通过JIT产生的机器码也不大,而真实的WordPress项目生成的机器码太大,引起CPU缓存命中率下降(CPU Cache Miss)。
                                                                               ......

对apache的工作模式分析很透彻:
Prefork、Worker、Event三者粗略介绍:

(1)prefork,多进程模式,1个进程服务于1个用户请求,成本比较高。但是,稳定性最高,不需要支持线程安全。
(2)worker,多进程多线程模式,1个进程含有多个worker线程,1个worker线程服务于1个用户请求,因为线程更轻量,成本比较低。但是,在KeepAlive场景下,worker资源会被client占据,无法响应其他请求(空等待)。
(3)event,多进程多线程模式,1个进程也含有多个worker线程,1个worker线程服务于1个用户请求。但是,它解决了KeepAlive场景下的worker线程被占据问题,它通过专门的线程来管理这些KeepAlive连接,然后再分配“工作”给具体处理的worker,工作worker不会因为KeepAlive而导致空等待。

博文摘自 : http://geek.csdn.net/news/detail/77849
背景:先升级wordpress最新版本,WP到最新的4.5.2版本。,再修改/etc/ImageMagick/policy.xml里修改配置文件屏蔽,官方给予的方法,禁止ImageMagick即可。

如果我们有关注服务器、网站安全方面信息的肯定在上周有看到关于ImageMagick安全漏洞的相关文章,如果我们的服务器、VPS是自己运维的那就需要注意这方面的问题。如果我们的WEB环境有安装过ImageMagick组件,那需要检查是否有漏洞的存在一起升级和解决问题。

同时,上午肯定很多网友有得到阿里云服务器安全提示,存放在上面的WordPress程序有WP_Image_Editor_Imagick漏洞问题,需要登入后台补丁等等的暗示。如果需要在线补丁则需要升级阿里云的骑士专业版,当然是需要收费的,其实我们即便要补丁安全也没有必要这样操作。因为这个WP_Image_Editor_Imagick漏洞本不是WP程序的,而是如果我们服务器环境中有安装ImageMagick且没有补丁的才会被利用。

第一、检查是否有ImageMagick漏洞

实践如下:
yum install ImageMagick  
[root@iZ25dcp92ckZ htdocs]# convert 'https://jackxiang.com"|ls "-la' OUT.png      
convert: not authorized `//jackxiang.com"|ls "-la' @ error/constitute.c/ReadImage/454.
convert: no images defined `OUT.png' @ error/convert.c/ConvertImageCommand/3046.

被我屏蔽了。

如果提示有执行成功且没有错误,则说明有漏洞,我们需要升级组件。如果提示错误,或者我们压根没有安装ImageMagick,那就没有问题。

第二、补丁WP_Image_Editor_Imagick

如果是自己架设的服务器,且有安装ImageMagick存在漏洞最好的方法是升级最新版本。临时解决WP漏洞的方法只需要修改一行代码就可以。

1、找到wp-includes/media.php 2898行

2、修改文件

$implementations = apply_filters( 'wp_image_editors', array( 'WP_Image_Editor_GD', 'WP_Image_Editor_Imagick' ) );
将2个库优先级对调就可以了。这样我们在阿里云后台再验证下就可以看到被修复。

总结,这个仅仅是临时解决方法,最为直接的方法还是要升级WP到最新版本,以及ImageMagick如果有安装则需要升级。

PS:补充信息

如果我们是虚拟主机,这个就需要主机提供商负责任了,咨询服务商是否有安装且是否有更新到最新版本的补丁。如果有安装ImageMagick且升级到最新版本一般是没有问题的。这里,根据官方提供的解决方法,如果我们是自建服务器,也可以通过这个方法解决。

1、修改配置文件

/etc/ImageMagick/policy.xml
2、添加脚本


这个官方给予的方法,禁止ImageMagick。

来自:https://wuzhuti.cn/1339.html
win10下很多软件的拖拽功能都失效了,也就是说不能把文件拖动到软件上直接打开,必须要用软件里的打开功能,这是非常麻烦的。经过几天搜索在网上找到了一个折中的方法,有着鱼和熊掌不能兼得的可惜。
    运行中输入regedit,打开注册表编辑器
    在下面的键值:
    HKEY_LOCAL_MACHINE > SOFTWARE > Microsoft > Windows > CurrentVersion > Policies > System
    找到EnableLUA将1改成0,然后重启。
win10drag
    重启后会发现拖拽问题正常了,但是win10自带的商店和浏览器Edge将不能打开,这可能是权限问题。

来自:http://lf.lnu.edu.cn/detail.jsp?id=42172
origin 是默认的远程版本库名称
你可以在 .git/config 之中进行修改

事实上 git push origin master 的意思是 git push origin master:master (将本地的 master 分支推送至远端的 master 分支,如果没有就新建一个)
在本地组策略编辑器界面,依次展开左侧面板用户配置-〉管理模板-〉windows组件-〉任务计划程序,点击选中“任务计划程序”,在右侧窗口找到并蛋黄及打开“禁止拖放”。
背景:运维这个活其实是系统偏重的活,鄙人一直没做过运维,干了不到一个月,感觉发现其实也有点打杂的感觉,但都是围绕系统、权限、分配多机器、调度、维修、协调、沟通,特别是strace在启动一些服务时启动不了,用它就能很好的定位问题在哪儿。
下面这个主要是讲常用 的一个命令,如下:
运维利器:万能的strace:(批注:这个哥们写得好,赞一个:跟踪进程启动,跟踪命令的执行,根据进程号跟踪,启动时都访问了哪些文件。)
http://www.yunweipai.com/archives/7334.html?utm_source=tuicool&utm_medium=referral

1)跟踪进程启动,主要是系统调用:
strace -tt -f  ./some_server ../conf/some_server.conf

2)通过它启动要跟踪的进程:
strace ls -lh /var/log/messages

3)在运行的some_server服务:
pidof some_server
17553

得到其pid 17553然后就可以用strace跟踪其执行:
strace -p 17553

strace常用选项:
从一个示例命令来看:
strace -tt -T -v -f -e trace=file -o /data/log/strace.log -s 1024 -p 23489

-tt 在每行输出的前面,显示毫秒级别的时间
-T 显示每次系统调用所花费的时间
-v 对于某些相关调用,把完整的环境变量,文件stat结构等打出来。
-f 跟踪目标进程,以及目标进程创建的所有子进程
-e 控制要跟踪的事件和跟踪行为,比如指定要跟踪的系统调用名称
-o 把strace的输出单独写到指定的文件
-s 当系统调用的某个参数是字符串时,最多输出指定长度的内容,默认是32个字节
-p 指定要跟踪的进程pid, 要同时跟踪多个pid, 重复多次-p选项即可。


实例:跟踪nginx, 看其启动时都访问了哪些文件
strace -tt -T -f -e trace=file -o /data/log/strace.log -s 1024 ./nginx



附录:
使用strace追踪多个进程:
http://www.ttlsa.com/tools/use-strace-to-track-multiple-processes/

如何使用strace+pstack利器分析程序性能:
http://www.cnblogs.com/bangerlee/archive/2012/04/30/2476190.html
strace_pstack]# gcc server.c -g -o server
strace_pstack]# gcc client.c -g -o client
[root@iZ25dcp92ckZ strace_pstack]# ./server
listening...
hello
hello
hello
hello

[root@iZ25dcp92ckZ strace_pstack]# ./client

ps -elf | grep server | grep -v grep
0 S root     2327417130  0  80   0 -  1041 hrtime 14:58 pts/1    00:00:00 ./server
[root@iZ25dcp92ckZ strace_pstack]# strace -o server.strace -Ttt -p 23274
Process 23274 attached
能看到生成的server.strace 脚本里时间相差1;s不对,nanosleep:


用pstack脚本找到是哪儿调用了nanosleep系统函数导致慢了1s:
[root@iZ25dcp92ckZ strace_pstack]# sh pstack.sh 23274
#0  0x00007f75e5bec480 in __nanosleep_nocancel () from /lib64/libc.so.6
#1  0x00007f75e5bec334 in sleep () from /lib64/libc.so.6
#2  0x0000000000400813 in ha_ha ()
#3  0x0000000000400aea in main ()


[root@iZ25dcp92ckZ strace_pstack]# vi pstack.sh
使用cp命令
cp /home/usr/dir/{file1,file2,file3,file4} /home/usr/destination/
需要注意的是这几个文件之间不要有空格

具有共同前缀
cp /home/usr/dir/file{1..4} ./




这个命令是用来把filename备份成filename.bak,等同于命令

cp filename filename.bak

这里利用的是bash的brace expansion(大括号扩展)功能,
按照bash手册(man bash)所述:
bash支持{a,b,c}这样的扩展,比如a{d,c,b}e 会被扩展成ade ace abe
所以
filename{,.bak}被扩展成filename filename.bak也就好理解了



原文http://www.haw-haw.org/node/1507



如果要批量备份就需要用 find 与 cp 向结合,cp 也有批量备份的功能,但是功能太单一,如 -b -S 选项:

    .复制时产生备份文件
     cp -b a.txt tmp/
    .复制时产生备份文件,尾标 ~1~格式
     cp -b -V t   a.txt /tmp    
    .指定备份文件尾标    
     cp -b -S _bak a.txt /tmp

find  /home/user -name date* –mtime 1 –exec cp {} /backup/{} .backup /;

  注意最后一封号 “  ; ” 必须有。


----------------------------------------------------------------------------------------------------------------------------------------------


经常会在博客或者论坛看到类似下面的命令 大括号扩展  Brace expansion  {     }  shell   作用

cp /etc/httpd/httpd.{,.bakup}
或者是

mv resume{z,}.doc
那么,在uinx / linux  shell命令中是什么意思?起什么作用呢?

{  } 并没有什么实际的含义,但是却可以作为Brace expansion(大括号扩展或叫做花括号扩展)而经常用于产生各种组个。以下是翻译自 GNU/BASH  man page  的内容:

Brace expansion(大括号扩展或叫做花括号扩展) 是用来随机产生字符串组合的机制。这种机制类似于文件的扩展名,但是并不需要存在响应的文件。Brace expansion(大括号扩展或叫做花括号扩展)模式是一可选的preamble(前导字符),后面跟着一系列逗号分隔的字符串,包含在一对花括号中, 再后面是一个可选的postscript(打印编程语言)。preamble(前导字符)被添加到花括号中的每个字符串前面,postscript(打印编程语言)被附加到每个结果字符串之后, 从左到右进行扩展。  花括号扩展可以嵌套。扩展字符串的结果没有排序;而是保留了从左到右的顺序。


1.如,在终端中输入下面命令:

echo foo{1,2,3}.txt
输出如下:


foo1.txt foo2.txt foo3.txt
foo1.txt foo2.txt foo3.txt


2.也可以使用下面附加的实例,去在命令中“创建”一个参数,以节省输入的时间,提高工作效率:


    echo file.txt{,.bak}

    echo file-{a..d}.txt

    echo mkdir -p /apache-jail/{usr,bin,lib64,dev}

    echo cp httpd.conf{,.backup}

    echo mv delta.{txt,doc}

    echo file.txt{,.bak}

    echo file-{a..d}.txt

    echo mkdir -p /apache-jail/{usr,bin,lib64,dev}

    echo cp httpd.conf{,.backup}

    echo mv delta.{txt,doc}


3.可以使用Brace expansion(大括号扩展或叫做花括号扩展)来复制,重命名文件,或者是备份文件,还可以是创建目录等。在下面这个习惯性使用的的例子中,将   file1.txt  备份为  file2.txt.bak  ,输入:


cp   -v  file1.txt file1.txt.bak
cp   -v  file1.txt file1.txt.bak


如果使用Brace expansion,节省时间,则输入:


cp    -v    file1.txt{,.bak}
cp    -v    file1.txt{,.bak}


输出如下:

file1.txt -> file1.txt.bak

更多大括号扩展实例如下:

4. 如果我们执行:


$ cp  /etc/apt/sources.list          /etc/apt/sources.list.bak
$ cp  /etc/apt/sources.list          /etc/apt/sources.list.bak


这两个 /etc/apt/sources 部分相同,为了少输入两次/etc/apt/sources ,大括号扩展参数。还有平时重命名,备份文件,创建链接时候,都可以使用大括号扩展参数的方法提高效率。

大括号扩展,即大括号包围的,用逗号隔开的参数会扩展为独立的多个参数。


$ cp /etc/apt/sources.{list,list.bak}
$ cp /etc/apt/sources.{list,list.bak}


Shell 在解释时会自动将后面的参数扩展成两个,就变成了和上面一样的完整命令。

当然,还可更简单,将   list  也考虑进去,在逗号前什么都不写,如下:


$ cp /etc/apt/sources.list{,.bak}
$ cp /etc/apt/sources.list{,.bak}


这样逗号前面没东西,那么参数就保持原来的不变,逗号后面的照样扩展。
From:
http://blog.csdn.net/bluecy/article/details/6529685
http://www.dabu.info/brace-expansion-cp-and-mv-with-shell-role-in.html
分页: 27/328 第一页 上页 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 下页 最后页 [ 显示模式: 摘要 | 列表 ]