热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在批处理模式下运行

top命令是每个人都在使用的用于监控Linux系统性能的最好的命令。你可能已经知道top命令的绝大部分操作,除了很少的几个操作,如果我没错的话,批处理模式就是其中之一。大部分的脚本

top 命令 是每个人都在使用的用于 监控 Linux 系统性能 的最好的命令。你可能已经知道 top 命令的绝大部分操作,除了很少的几个操作,如果我没错的话,批处理模式就是其中之一。

大部分的脚本编写者和开发人员都知道这个,因为这个操作主要就是用来编写脚本。

如果你不了解这个,不用担心,我们将在这里介绍它。

什么是 top 命令的批处理模式

批处理模式允许你将 top 命令的输出发送至其他程序或者文件中。

在这个模式中,top 命令将不会接收输入并且持续运行,直到迭代次数达到你用 -n 选项指定的次数为止。

如果你想解决 Linux 服务器上的任何性能问题,你需要正确的 理解 top 命令的输出。

1) 如何在批处理模式下运行 top 命令

默认地,top 命令按照 CPU 的使用率来排序输出结果,所以当你在批处理模式中运行以下命令时,它会执行同样的操作并打印前 35 行:

# top -bc | head -35

top - 06:41:14 up 8 days, 20:24,  1 user,  load average: 0.87, 0.77, 0.81
Tasks: 139 total,   1 running, 136 sleeping,   0 stopped,   2 zombie
%Cpu(s):  0.0 us,  3.2 sy,  0.0 ni, 96.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3880940 total,  1595932 free,   886736 used,  1398272 buff/cache
KiB Swap:  1048572 total,   514640 free,   533932 used.  2648472 avail Mem

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
     1 root      20   0  191144   2800   1596 S   0.0  0.1   5:43.63 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
     2 root      20   0       0      0      0 S   0.0  0.0   0:00.32 [kthreadd]
     3 root      20   0       0      0      0 S   0.0  0.0   0:28.10 [ksoftirqd/0]
     5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [kworker/0:0H]
     7 root      rt   0       0      0      0 S   0.0  0.0   0:33.96 [migration/0]
     8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 [rcu_bh]
     9 root      20   0       0      0      0 S   0.0  0.0  63:05.12 [rcu_sched]
    10 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [lru-add-drain]
    11 root      rt   0       0      0      0 S   0.0  0.0   0:08.79 [watchdog/0]
    12 root      rt   0       0      0      0 S   0.0  0.0   0:08.82 [watchdog/1]
    13 root      rt   0       0      0      0 S   0.0  0.0   0:44.27 [migration/1]
    14 root      20   0       0      0      0 S   0.0  0.0   1:22.45 [ksoftirqd/1]
    16 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [kworker/1:0H]
    18 root      20   0       0      0      0 S   0.0  0.0   0:00.01 [kdevtmpfs]
    19 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [netns]
    20 root      20   0       0      0      0 S   0.0  0.0   0:01.35 [khungtaskd]
    21 root       0 -20       0      0      0 S   0.0  0.0   0:00.02 [writeback]
    22 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [kintegrityd]
    23 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [bioset]
    24 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [kblockd]
    25 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [md]
    26 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [edac-poller]
    33 root      20   0       0      0      0 S   0.0  0.0   1:19.07 [kswapd0]
    34 root      25   5       0      0      0 S   0.0  0.0   0:00.00 [ksmd]
    35 root      39  19       0      0      0 S   0.0  0.0   0:12.80 [khugepaged]
    36 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [crypto]
    44 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [kthrotld]
    46 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [kmpath_rdacd]

2) 如何在批处理模式下运行 top 命令并按内存使用率排序结果

在批处理模式中运行以下命令按内存使用率对结果进行排序:

# top -bc -o +%MEM | head -n 20

top - 06:42:00 up 8 days, 20:25,  1 user,  load average: 0.66, 0.74, 0.80
Tasks: 146 total,   1 running, 145 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3880940 total,  1422044 free,  1059176 used,  1399720 buff/cache
KiB Swap:  1048572 total,   514640 free,   533932 used.  2475984 avail Mem

 PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 18105 mysql     20   0 1453900 156096   8816 S   0.0  4.0   2:12.98 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
  1841 root      20   0  228980 107036   5360 S   0.0  2.8   0:05.56 /usr/local/cpanel/3rdparty/perl/528/bin/perl -T -w /usr/local/cpanel/3rdparty/bin/spamd --max-children=3 --max-spare=1 --allowed-ips=127.0.0.+
  4301 root      20   0  230208 104608   1816 S   0.0  2.7   0:03.77 spamd child
  8139 nobody    20   0  257000  27108   3408 S   0.0  0.7   0:00.04 /usr/sbin/httpd -k start
  7961 nobody    20   0  256988  26912   3160 S   0.0  0.7   0:00.05 /usr/sbin/httpd -k start
  8190 nobody    20   0  256976  26812   3140 S   0.0  0.7   0:00.05 /usr/sbin/httpd -k start
  8353 nobody    20   0  256976  26812   3144 S   0.0  0.7   0:00.04 /usr/sbin/httpd -k start
  8629 nobody    20   0  256856  26736   3108 S   0.0  0.7   0:00.02 /usr/sbin/httpd -k start
  8636 nobody    20   0  256856  26712   3100 S   0.0  0.7   0:00.03 /usr/sbin/httpd -k start
  8611 nobody    20   0  256844  25764   2228 S   0.0  0.7   0:00.01 /usr/sbin/httpd -k start
  8451 nobody    20   0  256844  25760   2220 S   0.0  0.7   0:00.04 /usr/sbin/httpd -k start
  8610 nobody    20   0  256844  25748   2224 S   0.0  0.7   0:00.01 /usr/sbin/httpd -k start
  8632 nobody    20   0  256844  25744   2216 S   0.0  0.7   0:00.03 /usr/sbin/httpd -k start

上面命令的详细信息:

  • -b:批处理模式选项
  • -c:打印运行中的进程的绝对路径
  • -o:指定进行排序的字段
  • head:输出文件的第一部分
  • -n:打印前 n 行

3) 如何在批处理模式下运行 top 命令并按照指定的用户进程对结果进行排序

如果你想要按照指定用户进程对结果进行排序请运行以下命令:

# top -bc -u mysql | head -n 10

top - 06:44:58 up 8 days, 20:27,  1 user,  load average: 0.99, 0.87, 0.84
Tasks: 140 total,   1 running, 137 sleeping,   0 stopped,   2 zombie
%Cpu(s): 13.3 us,  3.3 sy,  0.0 ni, 83.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3880940 total,  1589832 free,   885648 used,  1405460 buff/cache
KiB Swap:  1048572 total,   514640 free,   533932 used.  2649412 avail Mem

 PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 18105 mysql     20   0 1453900 156888   8816 S   0.0  4.0   2:16.42 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid

4) 如何在批处理模式下运行 top 命令并按照处理时间进行排序

在批处理模式中使用以下 top 命令按照处理时间对结果进行排序。这展示了任务从启动以来已使用的总 CPU 时间。

但是如果你想要检查一个进程在 Linux 上运行了多长时间请看接下来的文章:

  • 检查 Linux 中进程运行时间的五种方法
# top -bc -o TIME+ | head -n 20

top - 06:45:56 up 8 days, 20:28,  1 user,  load average: 0.56, 0.77, 0.81
Tasks: 148 total,   1 running, 146 sleeping,   0 stopped,   1 zombie
%Cpu(s):  0.0 us,  3.1 sy,  0.0 ni, 96.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3880940 total,  1378664 free,  1094876 used,  1407400 buff/cache
KiB Swap:  1048572 total,   514640 free,   533932 used.  2440332 avail Mem

 PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
     9 root      20   0       0      0      0 S   0.0  0.0  63:05.70 [rcu_sched]
   272 root      20   0       0      0      0 S   0.0  0.0  16:12.13 [xfsaild/vda1]
  3882 root      20   0  229832   6212   1220 S   0.0  0.2   9:00.84 /usr/sbin/httpd -k start
     1 root      20   0  191144   2800   1596 S   0.0  0.1   5:43.75 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
  3761 root      20   0   68784   9820   2048 S   0.0  0.3   5:09.67 tailwatchd
  3529 root      20   0  404380   3472   2604 S   0.0  0.1   3:24.98 /usr/sbin/rsyslogd -n
  3520 root      20   0  574208    572    164 S   0.0  0.0   3:07.74 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
   444 dbus      20   0   58444   1144    612 S   0.0  0.0   2:23.90 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
 18105 mysql     20   0 1453900 157152   8816 S   0.0  4.0   2:17.29 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
   249 root       0 -20       0      0      0 S   0.0  0.0   1:28.83 [kworker/0:1H]
    14 root      20   0       0      0      0 S   0.0  0.0   1:22.46 [ksoftirqd/1]
    33 root      20   0       0      0      0 S   0.0  0.0   1:19.07 [kswapd0]
   342 root      20   0   39472   2940   2752 S   0.0  0.1   1:18.17 /usr/lib/systemd/systemd-journald

5) 如何在批处理模式下运行 top 命令并将结果保存到文件中

如果出于解决问题的目的,你想要和别人分享 top 命令的输出,请使用以下命令重定向输出到文件中:

# top -bc | head -35 > top-report.txt

# cat top-report.txt

top - 06:47:11 up 8 days, 20:30,  1 user,  load average: 0.67, 0.77, 0.81
Tasks: 133 total,   4 running, 129 sleeping,   0 stopped,   0 zombie
%Cpu(s): 59.4 us, 12.5 sy,  0.0 ni, 28.1 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3880940 total,  1596268 free,   843284 used,  1441388 buff/cache
KiB Swap:  1048572 total,   514640 free,   533932 used.  2659084 avail Mem

 PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
  9686 daygeekc  20   0  406132  62184  43448 R  94.1  1.6   0:00.34 /opt/cpanel/ea-php56/root/usr/bin/php-cgi
  9689 nobody    20   0  256588  24428   1184 S   5.9  0.6   0:00.01 /usr/sbin/httpd -k start
     1 root      20   0  191144   2800   1596 S   0.0  0.1   5:43.79 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
     2 root      20   0       0      0      0 S   0.0  0.0   0:00.32 [kthreadd]
     3 root      20   0       0      0      0 S   0.0  0.0   0:28.11 [ksoftirqd/0]
     5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [kworker/0:0H]
     7 root      rt   0       0      0      0 S   0.0  0.0   0:33.96 [migration/0]
     8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 [rcu_bh]
     9 root      20   0       0      0      0 R   0.0  0.0  63:05.82 [rcu_sched]
    10 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [lru-add-drain]
    11 root      rt   0       0      0      0 S   0.0  0.0   0:08.79 [watchdog/0]
    12 root      rt   0       0      0      0 S   0.0  0.0   0:08.82 [watchdog/1]
    13 root      rt   0       0      0      0 S   0.0  0.0   0:44.28 [migration/1]
    14 root      20   0       0      0      0 S   0.0  0.0   1:22.46 [ksoftirqd/1]
    16 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [kworker/1:0H]
    18 root      20   0       0      0      0 S   0.0  0.0   0:00.01 [kdevtmpfs]
    19 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [netns]
    20 root      20   0       0      0      0 S   0.0  0.0   0:01.35 [khungtaskd]
    21 root       0 -20       0      0      0 S   0.0  0.0   0:00.02 [writeback]
    22 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [kintegrityd]
    23 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [bioset]
    24 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [kblockd]
    25 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [md]
    26 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [edac-poller]
    33 root      20   0       0      0      0 S   0.0  0.0   1:19.07 [kswapd0]
    34 root      25   5       0      0      0 S   0.0  0.0   0:00.00 [ksmd]
    35 root      39  19       0      0      0 S   0.0  0.0   0:12.80 [khugepaged]
    36 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [crypto]

如何按照指定字段对结果进行排序

top 命令的最新版本中, 按下 f 键进入字段管理界面。

要使用新字段进行排序, 请使用 up/down 箭头选择正确的选项,然后再按下 s 键进行排序。最后按 q 键退出此窗口。

Fields Management for window 1:Def, whose current sort field is %CPU
    Navigate with Up/Dn, Right selects for move then  or Left commits,
    'd' or  toggles display, 's' sets sort.  Use 'q' or  to end!
 PID     = Process Id             nsUTS   = UTS namespace Inode
 USER    = Effective User Name    LXC     = LXC container name
 PR      = Priority               RSan    = RES Anonymous (KiB)
 NI      = Nice Value             RSfd    = RES File-based (KiB)
 VIRT    = Virtual Image (KiB)    RSlk    = RES Locked (KiB)
 RES     = Resident Size (KiB)    RSsh    = RES Shared (KiB)
 SHR     = Shared Memory (KiB)    CGNAME  = Control Group name
 S       = Process Status         NU      = Last Used NUMA node
 %CPU    = CPU Usage
 %MEM    = Memory Usage (RES)
 TIME+   = CPU Time, hundredths
 COMMAND = Command Name/Line
 PPID    = Parent Process pid
 UID     = Effective User Id
 RUID    = Real User Id
 RUSER   = Real User Name
 SUID    = Saved User Id
 SUSER   = Saved User Name
 GID     = Group Id
 GROUP   = Group Name
 PGRP    = Process Group Id
 TTY     = Controlling Tty
 TPGID   = Tty Process Grp Id
 SID     = Session Id
 nTH     = Number of Threads
 P       = Last Used Cpu (SMP)
 TIME    = CPU Time
 SWAP    = Swapped Size (KiB)
 CODE    = Code Size (KiB)
 DATA    = Data+Stack (KiB)
 nMaj    = Major Page Faults
 nMin    = Minor Page Faults
 nDRT    = Dirty Pages Count
 WCHAN   = Sleeping in Function
 Flags   = Task Flags
 CGROUPS = Control Groups
 SUPGIDS = Supp Groups IDs
 SUPGRPS = Supp Groups Names
 TGID    = Thread Group Id
 OOMa    = OOMEM Adjustment
 OOMs    = OOMEM Score current
 ENVIRON = Environment vars
 vMj     = Major Faults delta
 vMn     = Minor Faults delta
 USED    = Res+Swap Size (KiB)
 nsIPC   = IPC namespace Inode
 nsMNT   = MNT namespace Inode
 nsNET   = NET namespace Inode
 nsPID   = PID namespace Inode
 nsUSER  = USER namespace Inode

top 命令的旧版本,请按 shift+fshift+o 键进入字段管理界面进行排序。

要使用新字段进行排序,请选择相应的排序字段字母, 然后按下回车键排序。

Current Sort Field:  N  for window 1:Def
 Select sort field via field letter, type any other key to return
  a: PID        = Process Id
  b: PPID       = Parent Process Pid
  c: RUSER      = Real user name
  d: UID        = User Id
  e: USER       = User Name
  f: GROUP      = Group Name
  g: TTY        = Controlling Tty
  h: PR         = Priority
  i: NI         = Nice value
  j: P          = Last used cpu (SMP)
  k: %CPU       = CPU usage
  l: TIME       = CPU Time
  m: TIME+      = CPU Time, hundredths
* N: %MEM       = Memory usage (RES)
  o: VIRT       = Virtual Image (kb)
  p: SWAP       = Swapped size (kb)
  q: RES        = Resident size (kb)
  r: CODE       = Code size (kb)
  s: DATA       = Data+Stack size (kb)
  t: SHR        = Shared Mem size (kb)
  u: nFLT       = Page Fault count
  v: nDRT       = Dirty Pages count
  w: S          = Process Status
  x: COMMAND    = Command name/line
  y: WCHAN      = Sleeping in Function
  z: Flags      = Task Flags
 Note1:
   If a selected sort field can't be
   shown due to screen width or your
   field order, the '<' and '>' keys
   will be unavailable until a field
   within viewable range is chosen.
 Note2:
   Field sorting uses internal values,
   not those in column display.  Thus,
   the TTY & WCHAN fields will violate
   strict ASCII collating sequence.
   (shame on you if WCHAN is chosen)

via: https://www.2daygeek.com/linux-run-execute-top-command-in-batch-mode/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:way-ww 校对:校对者ID

本文由 LCTT 原创编译,Linux中国 荣誉推出

如何在批处理模式下运行 top 命令

推荐阅读
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • RouterOS 5.16软路由安装图解教程
    本文介绍了如何安装RouterOS 5.16软路由系统,包括系统要求、安装步骤和登录方式。同时提供了详细的图解教程,方便读者进行操作。 ... [详细]
  • Hibernate延迟加载深入分析-集合属性的延迟加载策略
    本文深入分析了Hibernate延迟加载的机制,特别是集合属性的延迟加载策略。通过延迟加载,可以降低系统的内存开销,提高Hibernate的运行性能。对于集合属性,推荐使用延迟加载策略,即在系统需要使用集合属性时才从数据库装载关联的数据,避免一次加载所有集合属性导致性能下降。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 本文介绍了一种轻巧方便的工具——集算器,通过使用集算器可以将文本日志变成结构化数据,然后可以使用SQL式查询。集算器利用集算语言的优点,将日志内容结构化为数据表结构,SPL支持直接对结构化的文件进行SQL查询,不再需要安装配置第三方数据库软件。本文还详细介绍了具体的实施过程。 ... [详细]
author-avatar
东张西望
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有