PHP 中常用的Linux命令
一,基本命令:
1,查看命令帮助文档
#man 命令英文原意:manual
man kill : 查看kill命令的文档
二,查看服务器运行情况
1,进程
#查看指定进程格式
ps -ef | grep php
UID PID PPID C STIME TTY TIME CMD
root 17285 1 0 7月08 ? 00:00:33 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
www 17286 17285 0 7月08 ? 00:00:00 php-fpm: pool www
www 17287 17285 0 7月08 ? 00:00:00 php-fpm: pool www
#显示所有包含其他使用者的行程
#a-显示所有用户的进程 u-显示进程的用户和拥有者 x-显示不依附于终端的进程
ps -aux
#杀死一个进程:
# -s 9 -s 指定发送的信号 ,这个信号是 9 ,9代表:发出杀死信号
kill -s 9 4328 :强制杀死进程号为4328的进程
#如果有多个进程,通过进程名称杀死进程:
killall -s 9 php-fpm :杀死所有php-fpm进程
#展示进程与进程之间的关系
pstree -apnh 17283 :只展示进程号和名称:pstree -p 17283 如下:
mysqld_safe(17283)───mysqld(17828)─┬─{mysqld}(17829)
├─{mysqld}(17830)
├─{mysqld}(17831)
├─{mysqld}(17832)
#展示进程的先后调起:
ps aft | grep mysql
2,端口
1,lsof(list open files)是一个列出当前系统打开文件的工具。
#查看服务器 8000 端口的占用情况:
lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 17272 root 8u IPv4 8417681 0t0 TCP *:http (LISTEN)
nginx 17272 root 9u IPv4 8417682 0t0 TCP *:http (LISTEN)
#更多命令:
lsof -i:8080:查看8080端口占用
lsof abc.txt:显示开启文件abc.txt的进程
lsof -c abc:显示abc进程现在打开的文件
lsof -c -p 1234:列出进程号为1234的进程所打开的文件
2,netstat 命令用于显示网络状态。查看监听某个端口的进程 https://www.runoob.com/linux/linux-comm-netstat.html
# -a或--all 显示所有连线中的Socket。
# -n或--numeric 直接使用IP地址,而不通过域名服务器。
# -p或--programs 显示正在使用Socket的程序识别码和程序名称。
netstat -anp | grep 9501
3,内存,CUP,硬盘
1,free命令,查看系统内存,可以man free查看具体参数与返回值
free
free -h #人性化表示数值
free -g # 以g为单位返回
2,df 查看硬盘容量,du显示目录或文件的大小
df -hl
df -hl 查看磁盘剩余空间
df -h 查看每个根路径的分区大小
du -sh [目录名] 返回该目录的大小
du -sm [文件夹] 返回该文件夹总M数
du -h [目录名] 查看指定文件夹下的所有文件大小(包含子文件夹)
3,top命令
top - 00:49:23 up 18 days, 7:10, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 92 total, 1 running, 91 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.2 sy, 0.0 ni, 99.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1777920 total, 100120 free, 515312 used, 1162488 buff/cache
KiB Swap: 2076668 total, 2027028 free, 49640 used. 1034620 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
20618 root 20 0 157576 2168 1548 R 0.3 0.1 0:00.65 top
1 root 20 0 125180 2900 1780 S 0.0 0.2 0:08.78 systemd
内容解析:
- 第一行: 00:49:23 系统时刻 ; up 18days 系统启动后到现在的时间 ; 1user 当前登陆的用户数; load average 当前系统负载的平均值,后面的三个值分别为1分钟前、5分钟前、15分钟前进程的平均数,一般的可以认为这个数值超过 CPU 数目时,CPU 将比较吃力的负载当前系统所包含的进程
- 第二行:Tasks:92 total 当前系统进程总数;1 running 当前运行中的进程数;91 sleeping 当前处于等待状态中的进程数;0 stoped 被停止的系统进程数;0 zombie 僵尸进程数
- 第三行:CPU:0.3% us 用户空间占用CPU百分比;0.2% sy 内核空间占用CPU百分比;0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比;99.5% id 空闲CPU百分比;0.0% wa 等待输入输出的CPU时间百分比;0.0% hi;0.0% si;0.0% st
- 第四行(Mem):total 物理内存总量;used 使用的物理内存总量;free 空闲内存总量; buffers 用作内核缓存的内存量
- 第五行(Swap):表示类别同第四行(Mem),但此处反映着交换分区(Swap)的使用情况。通常,交换分区(Swap)被频繁使用的情况,将被视作物理内存不足而造成的。
total 交换区总量;used 使用的交换区总量;free 空闲交换区总量;cached 缓冲的交换区总量 - 最下部分的进程列表栏:以 PID 区分的进程列表将根据所设定的画面更新时间定期的更新。通过 top 内部命令可以控制此处的显示方式:
PID:进程的ID
USER:进程所有者
PR:进程的优先级别,越小越优先被执行
NInice:值
VIRT:进程占用的虚拟内存
RES:进程占用的物理内存
SHR:进程使用的共享内存
S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数
%CPU:进程占用CPU的使用率
%MEM:进程使用的物理内存和总内存的百分比
TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
COMMAND:进程启动命令名称 - top 运行中可以通过 top 的内部命令对进程的显示方式进行控制。内部命令如下表:
s- 改变画面更新频率
l - 关闭或开启第一部分第一行 top 信息的表示
t - 关闭或开启第一部分第二行 Tasks 和第三行 Cpus 信息的表示
m - 关闭或开启第一部分第四行 Mem 和 第五行 Swap 信息的表示
N - 以 PID 的大小的顺序排列表示进程列表(第三部分后述)
P - 以 CPU 占用率大小的顺序排列进程列表 (第三部分后述)
M - 以内存占用率大小的顺序排列进程列表 (第三部分后述)
h - 显示帮助
n - 设置在进程列表所显示进程的数量
q - 退出 top
三,网络
1,查看IP地址
ifconfig 或者 ip addr: 查看IP 。 虚拟机查看IP地址失败时:https://www.cnblogs.com/technology-huangyan/p/9146699.html
2,telnet简单使用
我们访问服务器的某个端口,访问不了,可以在服务器上使用telnet来判断能否进行访问。如果服务器的telnet能访问,则排除是服务进程挂了的可能性;而应该考虑是防火墙,阿里云控制台的端口开放与否等原因。并进行排查。
yum install telnet : 安装telnet
telnet 127.0.0.1 80 :测试本地80端口是否开放
telnet 120.79.5.254 22 :测试远程服务器的22端口是否能链接 Connected to 120.79.5.254.表示成功。
3,ping :执行 ping 指令会使用 ICMP 传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。
ping www.baidu.com
4,Firewalls防火墙
centos默认已经下载Firewalls,如果没有,安装:yum install -y firewalld yum install -y firewall-config
1,查看状态: systemctl status firewalld 查看已经开放的端口:firewall-cmd --list-ports
2,开启Firewalls: systemctl start firewalld 开机启动:systemctl enable firewalld
3,关闭Firewalls: systemctl stop firewalld 取消开机启动:systemctl disable firewalld
4,重启:systemctl restart firewalld
5,添加端口:firewall-cmd --permanent --zone=public --add-port=21/tcp
firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --permanent --zone=public --add-port=3306/tcp
firewall-cmd --permanent --zone=public --add-service=ftp
四,管理服务与常用软件(本章前提:由lnmp安装的nginx+mysql+php环境)
1,管理服务
1,service命令用于对系统服务进行管理。service命令本身是一个shell脚本,它在/etc/init.d/目录查找指定的服务脚本,然后调用该服务脚本来完成任务。
chkconfig --list :查看系统服务列表,以及每个服务的运行级别。
chkconfig <service> on :设置指定服务<service>开机时自动启动。
chkconfig <service> off :设置指定服务<service>开机时不自动启动。
man service :查看service文档
service php-fpm start :开启php-fpm服务
service php-fpm stop :停止php-fpm服务
service php-fpm reload :重新加载配置文件
service php-fpm restart :重启php-fpm服务
service php-fpm status :查看服务状态
nginx与mysql服务器同理
2,systemctl命令 http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html
systemctl status :查看系统状态和单个 Unit 的状态。
systemctl start php-fpm 开启php-fpm服务
systemctl stop php-fpm
systemctl status php-fpm
systemctl restart php-fpm
systemctl reload php-fpm
2,lnmp 相关操作
lnmp status
lnmp start
lnmp stop
lnmp reload
lnmp restart
3,php,MySql,Nginx,Redis文件位置
#php配置文件:1,find / -name php.ini 2,打开phpinfo()看一看,3,php --ini
一般在: /usr/local/php/etc/php.ini
#php-fpm配置文件:
一般在:/usr/local/php/etc/php-fpm.conf
#mysql配置文件:https://zhuanlan.zhihu.com/p/52862020
一般在:/etc/my.cnf
#nginx配置文件:find / -name nginx.conf
/usr/local/nginx/conf
#redis安装与配置:https://www.cnblogs.com/heqiuyong/p/10463334.html
1,设置了软链:ln -s /usr/local/redis/bin/redis-cli /usr/bin/redis 所有直接:redis 就打开了redis客户端
2,启动redis:/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf
五,后台运行脚本
1,当我们想后台执行一个PHP脚本,并且收集它输出的信息,以便我们去查看。我们可以通过 nohup 配合 & 一起使用。把信息打印到当前工作目录的nohup.out文件。
nohup php /data/test_nohup.php 2>&1 &
nohup php /data/test_nohup.php >> /home/test.log 2>&1 &
其中: 2>&1的意思是将标准错误(2)也定向到标准输出(1)的输出文件中。
Linux 中三种标准输入输出,分别是STDIN,STDOUT,STDERR,对应的数字是0,1,2。
2,如果我们想查看实时更新的信息,可以使用tail -n 20 -f ./nohup.out 来进行查看。
相关备注:
---------------------内存--------------------------------
查看内存情况: free -h
top shift+m 按内存排序显示
列出消耗内存最多的前10个进程: ps auxw|head -1;ps auxw|sort -rn -k4|head -10
--------------------------php------------------------------
查看php进程总数: pstree|grep php-fpm
列出消耗内存最多的前10个进程: ps auxw|head -1;ps auxw|sort -rn -k4|head -10
php-fpm.conf中参数作用的说明:
pm.max_children:静态方式下开启的php-fpm进程数量。
pm.start_servers:动态方式下的起始php-fpm进程数量。
pm.min_spare_servers:动态方式下的最小php-fpm进程数。
pm.max_spare_servers:动态方式下的最大php-fpm进程数量。
备份一下原配置文件: cp php-fpm.conf php-fpm.conf.bak
php-fpm有两种执行方式:
一种是Static静态,另一种是Dynamic动态。如果设置成静态,那么只有 pm.max_children 这个参数起作用。如果设置成动态则有 pm.start_servers 、 pm.min_spare_servers 和 pm.max_spare_servers 这三个参数起作用。设置成动态后,当php-fpm启动时会按照 pm.start_servers 的参数设置启动相应个数的进程,之后php-fpm的进程数量将维持在 pm.min_spare_servers 和 pm.max_spare_servers 指定的个数之间。
如何选择使用php-fpm的静态还是动态执行方式:
动态php-fpm执行方式允许php-fpm释放多余进程,从而节约内存资源。
静态php-fpm执行方式不允许php-fpm释放多于进程,避免了频繁开启或停止php-fpm进程,从而降低了服务器在某些情况下的响应时间。
------------------------------重启php-fpm------------------------------------------
systemctl restart php71-php-fpm
-----------------------php 安装【opcache】------------------------
步骤1:安装配opcache
yum install php73-php-opcache
步骤2:修改opcache.ini
vim /etc/opt/remi/php73/php.d/10-opcache.ini
--
opcache.enable=1
opcache.memory_consumption=512
opcache.interned_strings_buffer=64
opcache.max_accelerated_files=100000
opcache.validate_timestamps=1
opcache.revalidate_freq=300
opcache.save_comments=1
opcache.log_verbosity_level=2
opcache.file_cache=/tmp
opcache.fast_shutdown=1
步骤3:重启php-fpm
service php73-php-fpm restart
步骤4:重启nginx
nginx -s reload
------------------php 错误日志------------------------------
tail -f -n200 /var/opt/remi/php73/log/php-fpm/www-error.log 实时查看日志 -n200 最后200行
php74 composer.json dumpautoload 自动加载运行 composer dump-auto 重新注册自动加载映射关系
------------------------------------------------
指令: ps
作用: 主要是查看服务器的进程信息
选项含义:
-e:等价于 ‘-A’ ,表示列出全部的进程
-f:显示全部的列(显示全字段)
ps -ef | grep php
more命令,功能类似 cat ,cat命令是整个文件的内容从上到下显示在屏幕上。 more会以一页一页的显示,方便逐页阅读
more /etc/opt/remi/php73/php-fpm.conf | grep log
----------------------------------------------
查找php配置文件: find / -name php.ini
error_log = /var/opt/remi/php73/log/php-fpm/error.log
--------------
nginx日志目录:/var/log/nginx/access.log
/var/log/nginx/error.log
-------------------------------------
yum list指的是列出所有可安装的安装包;
yum list installed指的是列出已安装的安装包;
安装phg扩展:
yum list | grep php73 | grep "oci8"
yum install oci8
-----------php -m-------
----查看运行中的php------
ps aux|grep php
------重载nginx配置-------
nginx -s reload
---------------------------启动-----------------------------
start, stop, restart
systemctl restart php74-php-fpm.service
systemctl status php74-php-fpm.service 查看启动php状态 对应php版本
systemctl restart nginx
systemctl status nginx 查看nginx状态
---------------------------------nginx----------------------------
使用命令nginx -s reload命令重启让配置文件生效
-------------------------
chmod -R 777 /usr
----------------------压缩文件-----------------------
zip -r config.zip ./config
----------------------------php安装扩展重启---------------------------
service php73-php-fpm restart
yum search php73 查询php有什么扩展
yum install php73-php-pecl-zip 安装对应扩展后重启
-------------------------------配置php环境变量-----------------------
vim /etc/profile
//加上
export PATH=$PATH:/usr/local/php/bin
保存退出
source /etc/profile
php -v
注:该配置对所有用户生效
-------------------------------查找nginx的配置网站-----------------------
which nginx //找到nginx的可执行文件
/usr/sbin/nginx -t //找到nginx的配置文件
cat /etc/nginx/nginx.conf //查看配置信息
include /etc/nginx/conf.d/*.conf; //可查看加载了哪些配置
-------------------------------定时任务-----------------------
crontab -e 编辑定时任务
*/20 * * * * /opt/remi/php71/root/bin/php /usr/share/nginx/html/r_4g/Library/Task/releaseIntegralTask.php > /dev/null 2>&1
*/5 * * * * /usr/bin/curl "http://127.0.0.1/Task/?service=FourgShop.releaseIntegral" > /dev/null
*/5 * * * * /usr/bin/curl "http://127.0.0.1/Task/?service=FourgShop.releaseIntegral" > /dev/null
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
查看crontab服务状态:service crond status
手动启动crontab服务:service crond start
crontab -e 编辑该用户的计时器设置。
crontab -l 列出该用户的计时器设置。
crontab -r 删除该用户的计时器设置。
crontab -u<用户名称> 指定要设定计时器的用户名称。
------------------------------------composer--------------------------------
局部安装
下载 Composer 的过程正确执行完毕后,可以将 composer.phar文件复制到任意目录(比如项目根目录下),然后通过php composer.phar 指令即可使用 Composer 了!
全局安装
全局安装是将 Composer 安装到系统环境变量 PATH所包含的路径下面,然后就能够在命令行窗口中直接执行composer命令了
Mac 或 Linux 系统:
打开命令行窗口并执行如下命令将前面下载的composer.phar文件移动到/usr/local/bin/目录下面:sudo mv composer.phar /usr/local/bin/composer
-----------------
nginx -c /etc/nginx/nginx.conf
cd /usr/sbin/
./nginx -s reload
/usr/sbin/nginx
cd /etc/nginx/conf.d/
cat /etc/nginx/nginx.conf
chmod +x /usr/local/sh/sds.sh
chmod 777 /usr/local/bin/composer
sudo mv composer.phar /usr/local/bin/composer
cd ~/.cache/composer
chmod 755 composer-temp.phar
sudo mv composer-temp.phar /usr/local/bin/composer
/usr/bin/env: php: No such file or directory
主要是php安装文件不在/usr/local/bin。安装在/usr/local/php5513中
找到php的可执行文件,/usr/local/php5513/bin/php
ln -s /usr/local/php5513/bin/php /usr/local/bin/php
如果现在就在终端敲入composer -h的时候,应该会出现
-bash: /usr/local/bin/composer: Permission denied
的情况,那么就给他设置权限
chmod +x /usr/local/bin/composer
再次敲入composer -h的时候,成功~!
------------------nginx------------------------------------
重启nginx
nginx -s reload :修改配置后重新加载生效
nginx -s reopen :重新打开日志文件
nginx -t -c /path/to/nginx.conf 测试nginx配置文件是否正确
关闭nginx
nginx -s stop : 快速停止nginx
quit :完整有序的停止nginx
启动nginx
nginx -c /path/to/nginx.conf

浙公网安备 33010602011771号