ps (英文全拼:process status)命令用于显示当前进程的状态,类似于 windows 的任务管理器。
ps [options] [--help]
查找指定进程格式:
ps -ef | grep 进程关键字
参数:
ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
-A 列出所有的进程
-w 显示加宽可以显示较多的资讯
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的进程
au(x) 输出格式 :
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER: 行程拥有者
PID: pid
%CPU: 占用的 CPU 使用率
%MEM: 占用的记忆体使用率
VSZ: 占用的虚拟记忆体大小
RSS: 占用的记忆体大小
TTY: 终端的次要装置号码 (minor device number of tty)
STAT: 该行程的状态:
D: 无法中断的休眠状态 (通常 IO 的进程)
R: 正在执行中
S: 静止状态
T: 暂停执行
Z: 不存在但暂时无法消除
W: 没有足够的记忆体分页可分配
<: 高优先序的行程
N: 低优先序的行程
L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)
START: 行程开始时间
TIME: 执行的时间
COMMAND:所执行的指令
结束进程
kill -9 进程PID
lsof(list open files)是一个列出当前系统打开文件的工具。
lsof 查看端口占用语法格式:
lsof -i:端口号
lsof -i:8080:查看8080端口占用
lsof abc.txt:显示开启文件abc.txt的进程
lsof -c abc:显示abc进程现在打开的文件
lsof -c -p 1234:列出进程号为1234的进程所打开的文件
lsof -g gid:显示归属gid的进程情况
lsof +d /usr/local/:显示目录下被进程开启的文件
lsof +D /usr/local/:同上,但是会搜索目录下的目录,时间较长
lsof -d 4:显示使用fd为4的进程
lsof -i -U:显示所有打开的端口和UNIX domain文件
lsof输出各列信息的意义如下:
COMD: 进程的名称 PID: 进程标识符
USER: 进程所有者
FD: 文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等
TYPE: 文件类型,如DIR、REG等
DEVICE: 指定磁盘的名称
SIZE:文件的大小
IODE: 索引节点《文件在磁盘上的标识
IAE: 打开文件的确切名称
netstat
netstat -tunlp 用于显示 tcp,udp 的端口和进程等相关情况。
netstat 查看端口占用语法格式:
netstat -tunlp | grep 端口号
netstat -ntlp //查看当前所有tcp端口
netstat -ntulp | grep 80 //查看所有80端口使用情况
netstat -ntulp | grep 3306 //查看所有3306端口使用情况
-t (tcp) 仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化为数字
-l 仅列出在Listen(监听)的服务状态
-p 显示建立相关链接的程序名
格式化小数不四舍五入
/**
* Notes: 格式化小数
* User: Remain Unruffled
* Date: 2023/9/13 17:05
* @param float $num 要格式化数字
* @param int $decimal 保留位数
* @return string
*/
function format(float $num = 0, int $decimal = 6){
$res = (string)floor($num * 10 ** $decimal) / 10 ** $decimal;
$res = number_format($res, $decimal, '.', '');
return $num ? str_pad($res,$decimal,'0',STR_PAD_RIGHT) :'0.00';
}
格式化小数四舍五入
/**
* Notes: 格式化小数
* User: Remain Unruffled
* Date: 2023/9/13 17:05
* @param float $num 要格式化数字
* @param int $decimal 保留位数
* @return string
*/
function format($num = 0,$decimal = 2){
return $num ? sprintf("%.".$decimal."f",$num):'0.00';
}
检查禁用函数
脚本检查
curl -Ss https://www.workerman.net/webman/check | php
解除禁用
执行脚本
curl -Ss https://www.workerman.net/webman/fix-disable-functions | php
手动解除
stream_socket_server
stream_socket_client
pcntl_signal_dispatch
pcntl_signal
pcntl_alarm
pcntl_fork
posix_getuid
posix_getpwuid
posix_kill
posix_setsid
posix_getpid
posix_getpwnam
posix_getgrnam
posix_getgid
posix_setgid
posix_initgroups
posix_setuid
posix_isatty
proc_open
proc_get_status
proc_close
shell_exec
数据库查询
查询出某个字段所有数据转为一维数组
Db::table('pic_link')->pluck('id')->toArray();
批量更新数据
$inbill = [
['id' => 1, 'title' => '收益', 'number' => 100],
['id' => 2, 'title' => '支付', 'number' => 50],
['id' => 3, 'title' => '花费', 'number' => 20],
];
$uniqueKey = 'id';
Db::table('user')->upsert($inbill, $uniqueKey, ['title', 'number']);
tinymce文本编辑器图片上传回显
D:\phpstudy_pro\WWW\Qianyi\OneYuan\oneyuanapi\plugin\admin\public\component\pear\module\tinymce\tinymce.js
第27行开始
if (res[this.response.statusName] == this.response.statusCode.ok) {
succFun(res[this.response.dataName]);
} else {
failFun(res[this.response.msgName]);
}
改为
if (res.code == 0) {
succFun(res.data.url);
} else {
failFun(res.msg);
}
和后台返回数据一至
支付宝支付
插件地址、安装
https://packagist.org/packages/riverslei/payment
composer require "riverslei/payment:*"
案例
报错net::ERR_HTTP2_PROTOCOL_ERROR 200
反向代理配置
proxy_set_header Connection $connection_upgrade;
改为
proxy_set_header Connection "Keep-Alive";