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 ``` 内容解析: 1. 第一行: 00:49:23 系统时刻 ; up 18days 系统启动后到现在的时间 ; 1user 当前登陆的用户数; load average 当前系统负载的平均值,后面的三个值分别为1分钟前、5分钟前、15分钟前进程的平均数,一般的可以认为这个数值超过 CPU 数目时,CPU 将比较吃力的负载当前系统所包含的进程 2. 第二行:Tasks:92 total 当前系统进程总数;1 running 当前运行中的进程数;91 sleeping 当前处于等待状态中的进程数;0 stoped 被停止的系统进程数;0 zombie 僵尸进程数 3. 第三行: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 4. 第四行(Mem):total 物理内存总量;used 使用的物理内存总量;free 空闲内存总量; buffers 用作内核缓存的内存量 5. 第五行(Swap):表示类别同第四行(Mem),但此处反映着交换分区(Swap)的使用情况。通常,交换分区(Swap)被频繁使用的情况,将被视作物理内存不足而造成的。 total 交换区总量;used 使用的交换区总量;free 空闲交换区总量;cached 缓冲的交换区总量 6. 最下部分的进程列表栏:以 PID 区分的进程列表将根据所设定的画面更新时间定期的更新。通过 top 内部命令可以控制此处的显示方式:   PID:进程的ID   USER:进程所有者   PR:进程的优先级别,越小越优先被执行   NInice:值   VIRT:进程占用的虚拟内存   RES:进程占用的物理内存   SHR:进程使用的共享内存   S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数   %CPU:进程占用CPU的使用率   %MEM:进程使用的物理内存和总内存的百分比   TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。   COMMAND:进程启动命令名称 7. 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](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 来进行查看。 ### 六,结语 本文主要是自己的一些总结,对Linux的理解还是比较浅的,但好记性不如烂笔头,何况自己的记性比较差,所以就记录下来。其他的一些常用的Linux命令会写在另一篇文章中,下期更新。

一,基本命令:

1,查看命令帮助文档
  1. #man 命令英文原意:manual
  2. man kill : 查看kill命令的文档

二,查看服务器运行情况

1,进程
  1. #查看指定进程格式
  2. ps -ef | grep php
  3. UID PID PPID C STIME TTY TIME CMD
  4. root 17285 1 0 708 ? 00:00:33 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
  5. www 17286 17285 0 708 ? 00:00:00 php-fpm: pool www
  6. www 17287 17285 0 708 ? 00:00:00 php-fpm: pool www
  7. #显示所有包含其他使用者的行程
  8. #a-显示所有用户的进程 u-显示进程的用户和拥有者 x-显示不依附于终端的进程
  9. ps -aux
  10. #杀死一个进程:
  11. # -s 9 -s 指定发送的信号 ,这个信号是 9 ,9代表:发出杀死信号
  12. kill -s 9 4328 :强制杀死进程号为4328的进程
  13. #如果有多个进程,通过进程名称杀死进程:
  14. killall -s 9 php-fpm :杀死所有php-fpm进程
  15. #展示进程与进程之间的关系
  16. pstree -apnh 17283 :只展示进程号和名称:pstree -p 17283 如下:
  17. mysqld_safe(17283)───mysqld(17828)─┬─{mysqld}(17829)
  18. ├─{mysqld}(17830)
  19. ├─{mysqld}(17831)
  20. ├─{mysqld}(17832)
  21. #展示进程的先后调起:
  22. ps aft | grep mysql
2,端口

1,lsof(list open files)是一个列出当前系统打开文件的工具。

  1. #查看服务器 8000 端口的占用情况:
  2. lsof -i:80
  3. COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
  4. nginx 17272 root 8u IPv4 8417681 0t0 TCP *:http (LISTEN)
  5. nginx 17272 root 9u IPv4 8417682 0t0 TCP *:http (LISTEN)
  6. #更多命令:
  7. lsof -i:8080:查看8080端口占用
  8. lsof abc.txt:显示开启文件abc.txt的进程
  9. lsof -c abc:显示abc进程现在打开的文件
  10. lsof -c -p 1234:列出进程号为1234的进程所打开的文件

2,netstat 命令用于显示网络状态。查看监听某个端口的进程 https://www.runoob.com/linux/linux-comm-netstat.html

  1. # -a或--all 显示所有连线中的Socket。
  2. # -n或--numeric 直接使用IP地址,而不通过域名服务器。
  3. # -p或--programs 显示正在使用Socket的程序识别码和程序名称。
  4. netstat -anp | grep 9501
3,内存,CUP,硬盘

1,free命令,查看系统内存,可以man free查看具体参数与返回值

  1. free
  2. free -h #人性化表示数值
  3. free -g # 以g为单位返回

2,df 查看硬盘容量,du显示目录或文件的大小

  1. df -hl
  2. df -hl 查看磁盘剩余空间
  3. df -h 查看每个根路径的分区大小
  4. du -sh [目录名] 返回该目录的大小
  5. du -sm [文件夹] 返回该文件夹总M
  6. du -h [目录名] 查看指定文件夹下的所有文件大小(包含子文件夹)

3,top命令

  1. top - 00:49:23 up 18 days, 7:10, 1 user, load average: 0.00, 0.01, 0.05
  2. Tasks: 92 total, 1 running, 91 sleeping, 0 stopped, 0 zombie
  3. %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
  4. KiB Mem : 1777920 total, 100120 free, 515312 used, 1162488 buff/cache
  5. KiB Swap: 2076668 total, 2027028 free, 49640 used. 1034620 avail Mem
  6. PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
  7. 20618 root 20 0 157576 2168 1548 R 0.3 0.1 0:00.65 top
  8. 1 root 20 0 125180 2900 1780 S 0.0 0.2 0:08.78 systemd

内容解析:

  1. 第一行: 00:49:23 系统时刻 ; up 18days 系统启动后到现在的时间 ; 1user 当前登陆的用户数; load average 当前系统负载的平均值,后面的三个值分别为1分钟前、5分钟前、15分钟前进程的平均数,一般的可以认为这个数值超过 CPU 数目时,CPU 将比较吃力的负载当前系统所包含的进程
  2. 第二行:Tasks:92 total 当前系统进程总数;1 running 当前运行中的进程数;91 sleeping 当前处于等待状态中的进程数;0 stoped 被停止的系统进程数;0 zombie 僵尸进程数
  3. 第三行: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
  4. 第四行(Mem):total 物理内存总量;used 使用的物理内存总量;free 空闲内存总量; buffers 用作内核缓存的内存量
  5. 第五行(Swap):表示类别同第四行(Mem),但此处反映着交换分区(Swap)的使用情况。通常,交换分区(Swap)被频繁使用的情况,将被视作物理内存不足而造成的。
    total 交换区总量;used 使用的交换区总量;free 空闲交换区总量;cached 缓冲的交换区总量
  6. 最下部分的进程列表栏:以 PID 区分的进程列表将根据所设定的画面更新时间定期的更新。通过 top 内部命令可以控制此处的显示方式:
      PID:进程的ID
      USER:进程所有者
      PR:进程的优先级别,越小越优先被执行
      NInice:值
      VIRT:进程占用的虚拟内存
      RES:进程占用的物理内存
      SHR:进程使用的共享内存
      S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数
      %CPU:进程占用CPU的使用率
      %MEM:进程使用的物理内存和总内存的百分比
      TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
      COMMAND:进程启动命令名称
  7. 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能访问,则排除是服务进程挂了的可能性;而应该考虑是防火墙,阿里云控制台的端口开放与否等原因。并进行排查。

  1. yum install telnet : 安装telnet
  2. telnet 127.0.0.1 80 :测试本地80端口是否开放
  3. telnet 120.79.5.254 22 :测试远程服务器的22端口是否能链接 Connected to 120.79.5.254.表示成功。
3,ping :执行 ping 指令会使用 ICMP 传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。
  1. ping www.baidu.com
4,Firewalls防火墙
  1. centos默认已经下载Firewalls,如果没有,安装:yum install -y firewalld yum install -y firewall-config
  2. 1,查看状态: systemctl status firewalld 查看已经开放的端口:firewall-cmd --list-ports
  3. 2,开启Firewalls systemctl start firewalld 开机启动:systemctl enable firewalld
  4. 3,关闭Firewalls systemctl stop firewalld 取消开机启动:systemctl disable firewalld
  5. 4,重启:systemctl restart firewalld
  6. 5,添加端口:firewall-cmd --permanent --zone=public --add-port=21/tcp
  7. firewall-cmd --permanent --zone=public --add-port=80/tcp
  8. firewall-cmd --permanent --zone=public --add-port=3306/tcp
  9. firewall-cmd --permanent --zone=public --add-service=ftp

四,管理服务与常用软件(本章前提:由lnmp安装的nginx+mysql+php环境)

1,管理服务

1,service命令用于对系统服务进行管理。service命令本身是一个shell脚本,它在/etc/init.d/目录查找指定的服务脚本,然后调用该服务脚本来完成任务。

  1. chkconfig --list :查看系统服务列表,以及每个服务的运行级别。
  2. chkconfig <service> on :设置指定服务<service>开机时自动启动。
  3. chkconfig <service> off :设置指定服务<service>开机时不自动启动。
  4. man service :查看service文档
  5. service php-fpm start :开启php-fpm服务
  6. service php-fpm stop :停止php-fpm服务
  7. service php-fpm reload :重新加载配置文件
  8. service php-fpm restart :重启php-fpm服务
  9. service php-fpm status :查看服务状态
  10. nginxmysql服务器同理

2,systemctl命令 http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html

  1. systemctl status :查看系统状态和单个 Unit 的状态。
  2. systemctl start php-fpm 开启php-fpm服务
  3. systemctl stop php-fpm
  4. systemctl status php-fpm
  5. systemctl restart php-fpm
  6. systemctl reload php-fpm
2,lnmp 相关操作
  1. lnmp status
  2. lnmp start
  3. lnmp stop
  4. lnmp reload
  5. lnmp restart
3,php,MySql,Nginx,Redis文件位置
  1. #php配置文件:1,find / -name php.ini 2,打开phpinfo()看一看,3,php --ini
  2. 一般在: /usr/local/php/etc/php.ini
  3. #php-fpm配置文件:
  4. 一般在:/usr/local/php/etc/php-fpm.conf
  5. #mysql配置文件:https://zhuanlan.zhihu.com/p/52862020
  6. 一般在:/etc/my.cnf
  7. #nginx配置文件:find / -name nginx.conf
  8. /usr/local/nginx/conf
  9. #redis安装与配置:https://www.cnblogs.com/heqiuyong/p/10463334.html
  10. 1,设置了软链:ln -s /usr/local/redis/bin/redis-cli /usr/bin/redis 所有直接:redis 就打开了redis客户端
  11. 2,启动redis:/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf

五,后台运行脚本

1,当我们想后台执行一个PHP脚本,并且收集它输出的信息,以便我们去查看。我们可以通过 nohup 配合 & 一起使用。把信息打印到当前工作目录的nohup.out文件。

  1. nohup php /data/test_nohup.php 2>&1 &
  2. nohup php /data/test_nohup.php >> /home/test.log 2>&1 &
  3. 其中: 2>&1的意思是将标准错误(2)也定向到标准输出(1)的输出文件中。
  4. Linux 中三种标准输入输出,分别是STDINSTDOUTSTDERR,对应的数字是012

2,如果我们想查看实时更新的信息,可以使用tail -n 20 -f ./nohup.out 来进行查看。

六,结语

本文主要是自己的一些总结,对Linux的理解还是比较浅的,但好记性不如烂笔头,何况自己的记性比较差,所以就记录下来。其他的一些常用的Linux命令会写在另一篇文章中,下期更新。

评论

  1. #1

    星星 2021-11-29 21:16:00
    看私聊 我想私下请教

  2. #2

    沫沫 2021-11-30 16:21:18
    为什么第一篇不见了呀