最近在调试脚本时,偶尔会由于脚本错误,出现一批的进程没有结束的情况. 手工结束进程,太浪费时间,因此找到一个可以批量结束同名进程的脚本命令,如下:
|
1 |
$ ps -ef | grep '进程名' | grep -v grep | awk '{print $2}' | xargs kill -9 |
最近在调试脚本时,偶尔会由于脚本错误,出现一批的进程没有结束的情况. 手工结束进程,太浪费时间,因此找到一个可以批量结束同名进程的脚本命令,如下:
|
1 |
$ ps -ef | grep '进程名' | grep -v grep | awk '{print $2}' | xargs kill -9 |
判断当前PHP的版本是否高于某个版本,或者低于某个版本的方法是使用version_compare()函数。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<?php header('content-type:text/html;charset=utf-8'); /** * 判断php的版本是否在7.0.0以上 */ echo '<pre>'; //本人使用的版本为 7.0.18 echo 'PHP的当前版本为 '.PHP_VERSION."\n"; var_dump(version_compare(PHP_VERSION,'5.2.0')); var_dump(version_compare(PHP_VERSION,'5.2.0','=')); var_dump(version_compare(PHP_VERSION,'5.3.0','ge')); if(version_compare(PHP_VERSION,'7.0.0','ge')){ echo '您的PHP版本大于7.0.0,当前版本为 '.PHP_VERSION; }else{ echo '您的PHP版本小于7.0.0,当前版本为 '.PHP_VERSION; } ?> |
vim显示行号可以快速的找到代码对应的行。
Ubuntu 16.04 LTS下,vim显示行号的命令如下:
|
1 |
$ sudo vim /etc/vim/vimrc |
在文件的最后一行增加
|
1 |
set nu |
即可。
最近服务器升级到了Ubuntu 16.04 LTS,结果遇到了与Ubuntu 12.04通过SFTP更新 WordPress相似的问题,界面中没有出现SSH的选项,只不过目前(2017.06.04)最新版本的WordPress(4.7.5)一直提示的是"无法连接到服务器",原因依旧是缺少PHP的SSH支持库,总结一下解决方法如下:
|
1 2 3 4 5 6 7 8 |
$ sudo apt-get install php-ssh2 $ sudo phpenmod ssh2 #如果使用PHP-FPM模块处理PHP协议,则重启PHP-FPM $ sudo service php7.0-fpm restart #如果使用Apache2自身的模块处理PHP协议,则重启Apache2 $ sudo service apache2 restart |
如果更新或者删除插件的时候提示 "未能找到WordPress插件目录",则参照
Ubuntu 14.04系统WordPress 4.5升级到PHP7之后执行插件升级报错“无法定位WordPress内容目录(wp-content)”中的方法修改即可。
目前(2017.06.09)依然存在的问题是更新插件的时候,提示拷贝出错。查看系统日志
|
1 |
$ cat /var/log/apache2/error.log | grep error |
可以看到如下错误信息
|
1 |
'PHP message: PHP Warning: file_put_contents(ssh2.sftp://Resource id #85/var/www/wordpress/.maintenance): failed to open stream: operation failed in /var/www/wordpress/wp-admin/includes/class-wp-filesystem-ssh2.php on line 253\nPHP message: PHP Warning: file_put_contents(ssh2.sftp://Resource id #90/var/www/wordpress/wp-content/upgrade/wp-statistics.12.0.7-HJk6Bj/wp-statistics/ajax.php): failed to open stream: operation failed in /var/www/wordpress/wp-admin/includes/class-wp-filesystem-ssh2.php on line 253\n', referer: https://www.mobibrw.com/wp-admin/plugins.php |
这个问题属于php-ssh2自身的BUG导致的,问题已经确认并修复,但是还没合并到Ubuntu 16.04 LTS所属的分支上。
目前的解决方法是单独安装Ubuntu 17.04系统上已经编译好的对应系统的deb包,然后手工安装更新。
详细的版本信息可以从Ubuntu php-ssh2 package查询各个系统版本上的关于php-ssh2的包信息。
比如本服务器上更新的命令示例如下:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
$ sudo apt-get install php-ssh2 $ wget https://launchpad.net/ubuntu/+archive/primary/+files/php-ssh2_1.0+0.13-2_amd64.deb $ sudo dpkg -i php-ssh2_1.0+0.13-2_amd64.deb $ rm -rf php-ssh2_1.0+0.13-2_amd64.deb #如果使用PHP-FPM模块处理PHP协议,则重启PHP-FPM $ sudo service php7.0-fpm restart #如果使用Apache2自身的模块处理PHP协议,则重启Apache2 $ sudo service apache2 restart |
如果外网访问不畅通,也可以从本站下载,示例脚本如下:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$ sudo apt-get install php-ssh2 $ wget https://www.mobibrw.com/wp-content/uploads/2017/06/php-ssh2_1.00.13-2_amd64.deb_.zip $ unzip php-ssh2_1.00.13-2_amd64.deb_.zip $ sudo dpkg -i php-ssh2_1.0+0.13-2_amd64.deb $ rm -rf php-ssh2_1.0+0.13-2_amd64.deb $ rm -rf php-ssh2_1.00.13-2_amd64.deb_.zip #如果使用PHP-FPM模块处理PHP协议,则重启PHP-FPM $ sudo service php7.0-fpm restart #如果使用Apache2自身的模块处理PHP协议,则重启Apache2 $ sudo service apache2 restart |
Python程序在运行时候,可能由于某些原因导致进程卡住在某行代码上,此时我们需要输出进程中各个线程的栈信息。
此时我们需要使用Python栈工具pstack的协助,项目的工程地址https://github.com/wooparadog/pstack/
具体的用法如下:
|
1 2 |
$ sudo pip install pstack $ sudo pstack pid |
顶层pom中可定义dependencyManagement和dependencies,它们的区别在于
dependencyManagement只是用来管理版本号,防止版本冲突,子pom依赖相应包时,会优先用dependencyManagement指定的版本号。
dependencies是实实在在的下载/依赖,子模块可以直接依赖到
Python自带了几个性能分析的模块:profile,cProfile和hotshot,使用方法基本都差不多,无非模块是纯Python还是用C写的。本文介绍cProfile。
继续阅读cProfile——Python性能分析工具
一般来说你使用的主机会限制你上传文件的大小,在WordPress的媒体文件上传可以看到,大多数都是2MB。如果是图片的话可能会还够用,但是如果是其他文件就不一定够用了。
增大可以上传的文件大小的话,则执行如下命令
|
1 |
$ sudo vim /etc/php/7.0/fpm/php.ini |
搜索"upload_max_filesize",把默认的2M修改为需要的大小。
搜索"post_max_size",把默认的8M修改为需要的大小。
重启PHP-FPM服务
|
1 |
$ sudo service php7.0-fpm restart |
重新刷新页面,上传文件即可。
最近在使用openface来测试人脸识别,实际过程中发现识别速度非常缓慢,平均每帧的识别速度达到了秒级水平,这个是不可接受的。跟踪代码性能,发现是dlib部分非常缓慢。
根据dlib的文档,默认使用
|
1 |
$ sudo pip install dlib |
安装的dlib库,由于对具体硬件的要求(CPU需要支持AVX指令集),是没有开启AVX指令加速的,另外由于显卡的要求,也是默认不开启CUDA的支持。
如果想要开启这部分加速,需要手工编译安装才可以,具体操作如下:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$ cd ~ $ mkdir dlib $ sudo pip download dlib $ tar -zxvf tar -zxvf dlib-*.tar.gz $ cd dlib* #安装依赖的库 $ sudo apt-get -y install libopenblas-dev #移除我们以前安装过的dlib $ sudo pip uninstall dlib #开启AVX指令集支持 $ sudo python setup.py install --yes USE_AVX_INSTRUCTIONS |
上面的命令是使用AVX指令加速功能的,如果机器上安装了CUDA,则需要正确安装cuDNN 5.0以上的版本,否在编译的时候会报告
|
1 2 3 4 |
-- Checking if you have the right version of cuDNN installed. -- *** Found cuDNN, but it looks like the wrong version so dlib will not use it. *** -- *** cuDNN V5.0 OR GREATER NOT FOUND. DLIB WILL NOT USE CUDA. *** -- *** If you have cuDNN then set CMAKE_PREFIX_PATH to include cuDNN's folder. |
对于使用
|
1 |
$ sudo apt install nvidia-cuda-toolkit |
安装的CUDA-7.5来说,可以从这里下载cuDNN v6.0 (April 27, 2017), for CUDA 7.5,下载完成后,整个目录中的include目录中的文件解压缩到/usr/local/include/目录下,lib64目录中的内容整个解压缩到/usr/lib/目录下,并且在/usr/local/lib/目录下建立libcudnn.so的软链接
|
1 |
$ sudo ln -s /usr/lib/libcudnn.so /usr/local/lib/libcudnn.so |
都配置正确后,使用如下编译命令安装:
|
1 |
$ sudo python setup.py install --yes DLIB_USE_CUDA |
Easily Create High Quality Object Detectors with Deep Learning
执行
|
1 |
$ luarocks install cutorch |
发生如下错误:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
[ 88%] Building C object lib/THC/CMakeFiles/THC.dir/THCStorageCopy.c.o In file included from generic/THCTensor.c:1:0, from /tmp/luarocks_cutorch-scm-1-8069/cutorch/lib/THC/THCGenerateAllTypes.h:17, from /tmp/luarocks_cutorch-scm-1-8069/cutorch/lib/THC/THCTensor.c:7: /tmp/luarocks_cutorch-scm-1-8069/cutorch/lib/THC/generic/THCTensor.c: In function ‘THCudaByteTensor_newExpand’: /tmp/luarocks_cutorch-scm-1-8069/cutorch/lib/THC/generic/THCTensor.c:304:3: error: implicit declaration of function ‘THLongStorage_calculateExpandGeometry’ [-Werror=implicit-function-declaration] THLongStorage_calculateExpandGeometry(tensor->size, ^ [ 90%] Building C object lib/THC/CMakeFiles/THC.dir/THCThreadLocal.c.o cc1: some warnings being treated as errors lib/THC/CMakeFiles/THC.dir/build.make:686: recipe for target 'lib/THC/CMakeFiles/THC.dir/THCTensor.c.o' failed make[2]: *** [lib/THC/CMakeFiles/THC.dir/THCTensor.c.o] Error 1 CMakeFiles/Makefile2:172: recipe for target 'lib/THC/CMakeFiles/THC.dir/all' failed make[1]: *** [lib/THC/CMakeFiles/THC.dir/all] Error 2 Makefile:127: recipe for target 'all' failed make: *** [all] Error 2 Error: Build error: Failed building. |
解决方法为:
|
1 2 |
$ luarocks install torch $ luarocks install cutorch |
error: implicit declaration of function ‘THLongStorage_calculateExpandGeometry’