AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-12607

Craig Francis's questions

Martin Hope
Craig Francis
Asked: 2020-09-08 07:40:11 +0800 CST

Apache PHP-FPM“软件导致连接中止”

  • 1

就像给自己的便条一样,也可能对其他人有所帮助...

我的 Apacheerror_log包含错误:

  • 软件导致连接中止
  • 错误调度请求:(读取输入旅)

例如:

[Mon Sep 07 12:56:24.267462 2020] [proxy_fcgi:error] [pid 13938:tid 140607124641236] (103)Software caused connection abort: [client 1.1.1.1:9060] AH01075: Error dispatching request to : (reading input brigade), referer: https://example.com/path/

Apacheaccess_log包含:

1.1.1.1 - - [2020-09-07 12:56:17] [-] "POST /path/ HTTP/2.0" 400 308 "https://example.com/path/" "Mozilla/5.0 ..."

注意 的 HTTP 状态400 Bad Request,它发生在 7 秒后。

此外,在 PHP 中处理它的地方,我register_shutdown_function用来创建自己的日志文件,其中详细说明了每个请求 - 包括用户 ID、http_response_code()(在这种情况下200)、请求处理所需的时间(0.031秒)以及它发生的时间(后期,12:56:17)。

这是 Apache/2.4.29 和 PHP-FPM 7.2

php-fpm apache-2.4
  • 1 个回答
  • 1180 Views
Martin Hope
Craig Francis
Asked: 2019-08-20 09:48:18 +0800 CST

防止在 sudo 中记录环境变量

  • 0

我正在尝试通过环境变量为脚本提供一个秘密值,但没有将其登录sudo到auth.log.

目前我有文件:

/etc/secret-key
export SECRET_CONFIG_KEY=K1PX7MZ8an8H2mRQR

该文件归 root:root (0400) 所有。

使用cronand sudo,我可以在用户下运行脚本www-data,并提供这个值。

5 * * * * root . /etc/secret-key; sudo -u www-data --preserve-env=SECRET_CONFIG_KEY /path/to/script

但是该auth.log文件随后包含以下行:

Aug 19 18:30:01 server sudo: root : TTY=unknown ; PWD=/root ; USER=www-data ; ENV=SECRET_CONFIG_KEY=K1PX7MZ8an8H2mRQR ; COMMAND=/path/to/script

小组中的任何人都可以阅读adm,并且每天都通过 LogWatch 给我发电子邮件。


我很高兴考虑其他方法。

主要功能是使用帐户将此秘密值提供给脚本,www-data其中该帐户仅在需要时才能访问此值(该帐户不应具有对密钥文件的读取权限)。

作为旁注,该www-data帐户无法编辑其任何脚本,该帐户仅用于运行它们。

cron
  • 1 个回答
  • 100 Views
Martin Hope
Craig Francis
Asked: 2019-08-20 08:51:46 +0800 CST

Apache LogFormat 和删除标头

  • 0

我有一个创建标题的脚本:

X-User-ID: 1234

我想记录该值,但最好不要将其发送回客户端。

日志记录可以通过以下方式完成:

LogFormat "... %{X-User-ID}o ..." inc_ref

但是当我添加时这不起作用:

Header unset "X-User-ID"

有没有办法取消设置标题,但仍然记录值?

apache-2.4
  • 2 个回答
  • 193 Views
Martin Hope
Craig Francis
Asked: 2019-04-09 03:01:18 +0800 CST

从 PHP-FPM 将自定义变量添加到 Apache 访问日志

  • 0

在 mod_php 中,您可以使用该apache_note()函数在 Apache 访问日志中记录变量:

<?php
apache_note('SCRIPT_TIME', '1234');
?>

使用 Apache 配置:

LogFormat "%h %l %u %t [%D/%{SCRIPT_TIME}n] \"%r\" %>s %b" inc_info
...
CustomLog /path/to/access_log inc_info

但该apache_note()功能在 PHP-FPM 中不可用。

同样,您不能使用apache_setenv()或setenv()设置环境变量(通过 记录%{SCRIPT_TIME}e)。

一种可能性是设置 Apache 可以使用“%{SCRIPT_TIME}i”记录的标头,但您需要小心不要让敏感信息发送到客户端(例如,了解登录脚本的准确处理时间可能是一种安全措施问题)。但更重要的是,如果内容已经发送到客户端,它就不起作用,因为您不能再发送标头(根据下面的完整示例)。

或者,PHP 可以编写它自己的日志文件,但这会重复很多 Apache 日志已经做的事情,有可能错过日志条目(例如,如果脚本有错误),并且将在 Apache 用户下创建权限(而不是以 root 身份写入)。


只是为了更详细,这是我用来记录脚本处理时间的代码:

<?php

define('SCRIPT_START', microtime(true));

function log_shutdown() {
    if (!defined('SCRIPT_END')) {
        define('SCRIPT_END', number_format(round((microtime(true) - SCRIPT_START), 4), 4));
    }
    if (function_exists('apache_note')) {
        apache_note('SCRIPT_TIME', SCRIPT_END);
    }
}

register_shutdown_function('log_shutdown');

?>

从时间的角度来看,虽然 Apache 确实提供了“%D”来记录“服务请求所花费的时间”,但这在很大程度上取决于用户的互联网连接。


这与我尝试使用以下配置在我的服务器上启用 HTTP/2 有关:

Protocols h2 http/1.1

<FilesMatch \.php$>
    CGIPassAuth on
    SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
    SetHandler "proxy:fcgi://127.0.0.1:9001"
</FilesMatch>

同样相关的是Nginx 版本

apache-2.4
  • 1 个回答
  • 1367 Views
Martin Hope
Craig Francis
Asked: 2017-02-14 07:57:13 +0800 CST

内存不足调试 Ubuntu / AWS

  • 0

我有一个经常引发Out of memory错误的新服务器。

这导致多个进程被 杀死oom-killer,我不知道为什么。


它位于 AWS (EC2) 上,具有 4GB RAM (t2.medium),在 Ubuntu 16.04.2 LTS 上运行带有 MySQL 和 PHP 的简单 Apache Web 服务器。

我使用 EBS 卷 (GP2) 添加了一个 4GB SWAP 分区。

可用内存量似乎很好:

free -h
              total        used        free      shared  buff/cache   available
Mem:           3.9G        201M         49M         13M        3.6G        3.6G
Swap:          4.0G         79M        3.9G

这似乎在一天中没有太大变化(used随机检查的最高数量是 250M)。

到目前为止,我还没有更改vm.overcommit_设置,因为我想在这样做之前知道问题是什么:

vm.overcommit_kbytes = 0
vm.overcommit_memory = 0
vm.overcommit_ratio = 50

的输出dmesg -T是:

[Mon Feb 13 13:09:00 2017] sessionclean invoked oom-killer: gfp_mask=0x26000c0, order=2, oom_score_adj=0
[Mon Feb 13 13:09:00 2017] sessionclean cpuset=/ mems_allowed=0
[Mon Feb 13 13:09:00 2017] CPU: 1 PID: 22353 Comm: sessionclean Not tainted 4.4.0-59-generic #80-Ubuntu
[Mon Feb 13 13:09:00 2017] Hardware name: Xen HVM domU, BIOS 4.2.amazon 12/09/2016
[Mon Feb 13 13:09:00 2017]  0000000000000286 0000000031d57236 ffff88005ce33af0 ffffffff813f7583
[Mon Feb 13 13:09:00 2017]  ffff88005ce33cc8 ffff880107ac0000 ffff88005ce33b60 ffffffff8120ad5e
[Mon Feb 13 13:09:00 2017]  ffffffff81cd2dc7 0000000000000000 ffffffff81e67760 0000000000000206
[Mon Feb 13 13:09:00 2017] Call Trace:
[Mon Feb 13 13:09:00 2017]  [<ffffffff813f7583>] dump_stack+0x63/0x90
[Mon Feb 13 13:09:00 2017]  [<ffffffff8120ad5e>] dump_header+0x5a/0x1c5
[Mon Feb 13 13:09:00 2017]  [<ffffffff81192722>] oom_kill_process+0x202/0x3c0
[Mon Feb 13 13:09:00 2017]  [<ffffffff811920ee>] ? oom_unkillable_task+0x9e/0xd0
[Mon Feb 13 13:09:00 2017]  [<ffffffff81192b49>] out_of_memory+0x219/0x460
[Mon Feb 13 13:09:00 2017]  [<ffffffff81198abd>] __alloc_pages_slowpath.constprop.88+0x8fd/0xa70
[Mon Feb 13 13:09:00 2017]  [<ffffffff81198eb6>] __alloc_pages_nodemask+0x286/0x2a0
[Mon Feb 13 13:09:00 2017]  [<ffffffff81198f6b>] alloc_kmem_pages_node+0x4b/0xc0
[Mon Feb 13 13:09:00 2017]  [<ffffffff8107ea5e>] copy_process+0x1be/0x1b70
[Mon Feb 13 13:09:00 2017]  [<ffffffff811c1670>] ? handle_mm_fault+0xce0/0x1820
[Mon Feb 13 13:09:00 2017]  [<ffffffff810805a0>] _do_fork+0x80/0x360
[Mon Feb 13 13:09:00 2017]  [<ffffffff81080929>] SyS_clone+0x19/0x20
[Mon Feb 13 13:09:00 2017]  [<ffffffff818384f2>] entry_SYSCALL_64_fastpath+0x16/0x71
[Mon Feb 13 13:09:00 2017] Mem-Info:
[Mon Feb 13 13:09:00 2017] active_anon:17107 inactive_anon:20026 isolated_anon:0
                            active_file:424384 inactive_file:433967 isolated_file:0
                            unevictable:914 dirty:36 writeback:0 unstable:0
                            slab_reclaimable:71336 slab_unreclaimable:6907
                            mapped:12390 shmem:3580 pagetables:4224 bounce:0
                            free:25546 free_pcp:0 free_cma:0
[Mon Feb 13 13:09:00 2017] Node 0 DMA free:15872kB min:28kB low:32kB high:40kB active_anon:0kB inactive_anon:0kB active_file:8kB inactive_file:4kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:15988kB managed:15904kB mlocked:0kB dirty:0kB writeback:0kB mapped:8kB shmem:0kB slab_reclaimable:20kB slab_unreclaimable:0kB kernel_stack:0kB pagetables:0kB unstable:0kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
[Mon Feb 13 13:09:00 2017] lowmem_reserve[]: 0 3745 3934 3934 3934
[Mon Feb 13 13:09:00 2017] Node 0 DMA32 free:66512kB min:7528kB low:9408kB high:11292kB active_anon:63604kB inactive_anon:72976kB active_file:1691880kB inactive_file:1723756kB unevictable:3244kB isolated(anon):0kB isolated(file):0kB present:3915776kB managed:3835152kB mlocked:3244kB dirty:124kB writeback:0kB mapped:48740kB shmem:13476kB slab_reclaimable:156484kB slab_unreclaimable:23920kB kernel_stack:2784kB pagetables:15124kB unstable:0kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
[Mon Feb 13 13:09:00 2017] lowmem_reserve[]: 0 0 189 189 189
[Mon Feb 13 13:09:00 2017] Node 0 Normal free:19800kB min:380kB low:472kB high:568kB active_anon:4824kB inactive_anon:7128kB active_file:5648kB inactive_file:12108kB unevictable:412kB isolated(anon):0kB isolated(file):0kB present:393216kB managed:193908kB mlocked:412kB dirty:20kB writeback:0kB mapped:812kB shmem:844kB slab_reclaimable:128840kB slab_unreclaimable:3708kB kernel_stack:816kB pagetables:1772kB unstable:0kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
[Mon Feb 13 13:09:00 2017] lowmem_reserve[]: 0 0 0 0 0
[Mon Feb 13 13:09:00 2017] Node 0 DMA: 4*4kB (MEH) 4*8kB (MEH) 1*16kB (H) 2*32kB (ME) 4*64kB (UME) 3*128kB (UME) 3*256kB (UME) 2*512kB (ME) 3*1024kB (MEH) 1*2048kB (E) 2*4096kB (M) = 15872kB
[Mon Feb 13 13:09:00 2017] Node 0 DMA32: 16314*4kB (UME) 172*8kB (UME) 0*16kB 0*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 66632kB
[Mon Feb 13 13:09:00 2017] Node 0 Normal: 4161*4kB (UE) 147*8kB (UME) 0*16kB 0*32kB 1*64kB (H) 1*128kB (H) 1*256kB (H) 1*512kB (H) 1*1024kB (H) 0*2048kB 0*4096kB = 19804kB
[Mon Feb 13 13:09:00 2017] Node 0 hugepages_total=0 hugepages_free=0 hugepages_surp=0 hugepages_size=2048kB
[Mon Feb 13 13:09:00 2017] 864746 total pagecache pages
[Mon Feb 13 13:09:00 2017] 2212 pages in swap cache
[Mon Feb 13 13:09:00 2017] Swap cache stats: add 62420, delete 60208, find 121128/130192
[Mon Feb 13 13:09:00 2017] Free swap  = 4103680kB
[Mon Feb 13 13:09:00 2017] Total swap = 4194300kB
[Mon Feb 13 13:09:00 2017] 1081245 pages RAM
[Mon Feb 13 13:09:00 2017] 0 pages HighMem/MovableOnly
[Mon Feb 13 13:09:00 2017] 70004 pages reserved
[Mon Feb 13 13:09:00 2017] 0 pages cma reserved
[Mon Feb 13 13:09:00 2017] 0 pages hwpoisoned
[Mon Feb 13 13:09:00 2017] [ pid ]   uid  tgid total_vm      rss nr_ptes nr_pmds swapents oom_score_adj name
[Mon Feb 13 13:09:00 2017] [  379]     0   379    10183     1130      22       3      771             0 systemd-journal
[Mon Feb 13 13:09:00 2017] [  435]     0   435    25742       48      18       3        0             0 lvmetad
[Mon Feb 13 13:09:00 2017] [  478]     0   478    10704      531      23       3      247         -1000 systemd-udevd
[Mon Feb 13 13:09:00 2017] [  906]     0   906     4030      662      11       3       27             0 dhclient
[Mon Feb 13 13:09:00 2017] [ 1032]     0  1032     1306       30       8       3        0             0 iscsid
[Mon Feb 13 13:09:00 2017] [ 1033]     0  1033     1431      877       8       3        0           -17 iscsid
[Mon Feb 13 13:09:00 2017] [ 1035]     0  1035     1100      308       8       3        0             0 acpid
[Mon Feb 13 13:09:00 2017] [ 1037]   104  1037    64099      599      27       3      196             0 rsyslogd
[Mon Feb 13 13:09:00 2017] [ 1043]     0  1043    58710      315      17       4       41             0 lxcfs
[Mon Feb 13 13:09:00 2017] [ 1047]   107  1047    10724      334      24       3       25          -900 dbus-daemon
[Mon Feb 13 13:09:00 2017] [ 1055]     0  1055     6511      409      19       3       25             0 atd
[Mon Feb 13 13:09:00 2017] [ 1065]     0  1065    71269       64      41       3     2782             0 accounts-daemon
[Mon Feb 13 13:09:00 2017] [ 1069]     0  1069     7155      502      18       3       27             0 systemd-logind
[Mon Feb 13 13:09:00 2017] [ 1071]     0  1071    16380      545      36       3      153         -1000 sshd
[Mon Feb 13 13:09:00 2017] [ 1073]     0  1073     6932      502      19       3       38             0 cron
[Mon Feb 13 13:09:00 2017] [ 1101]     0  1101     3344       51      11       3        1             0 mdadm
[Mon Feb 13 13:09:00 2017] [ 1114]     0  1114    69272      148      39       3       45             0 polkitd
[Mon Feb 13 13:09:00 2017] [ 1202]     0  1202     4868      428      14       3       37             0 irqbalance
[Mon Feb 13 13:09:00 2017] [ 1221]   113  1221    27509      437      24       3       97             0 ntpd
[Mon Feb 13 13:09:00 2017] [ 1236]     0  1236     3619      402      11       3        0             0 agetty
[Mon Feb 13 13:09:00 2017] [ 1238]     0  1238     3665      361      12       3        0             0 agetty
[Mon Feb 13 13:09:00 2017] [ 1389]     0  1389   100324     4842     154       3     1167             0 apache2
[Mon Feb 13 13:09:00 2017] [ 7047]   114  7047    88165      925      64       3      437             0 opendkim
[Mon Feb 13 13:09:00 2017] [30354]     0 30354    16352      526      23       3       82             0 master
[Mon Feb 13 13:09:00 2017] [30356]   112 30356    16999      306      25       3      169             0 qmgr
[Mon Feb 13 13:09:00 2017] [30361]   112 30361    20306      889      30       3      174             0 tlsmgr
[Mon Feb 13 13:09:00 2017] [27212]     0 27212     6011      664      17       3       23             0 vsftpd
[Mon Feb 13 13:09:00 2017] [30271]     0 30271     4981      711      14       3       73             0 mysqld_safe
[Mon Feb 13 13:09:00 2017] [20955]     0 20955    23842     1213      51       3      229             0 sshd
[Mon Feb 13 13:09:00 2017] [20957]  1001 20957    11312      608      26       3      218             0 systemd
[Mon Feb 13 13:09:00 2017] [20959]  1001 20959    52158       95      36       4      391             0 (sd-pam)
[Mon Feb 13 13:09:00 2017] [21053]  1001 21053    23908      629      49       3      309             0 sshd
[Mon Feb 13 13:09:00 2017] [21054]  1001 21054     5382      862      15       3      434             0 bash
[Mon Feb 13 13:09:00 2017] [21565]     0 21565    23842     1305      51       3      136             0 sshd
[Mon Feb 13 13:09:00 2017] [21595]  1001 21595    23842      728      48       3      143             0 sshd
[Mon Feb 13 13:09:00 2017] [21596]  1001 21596     5378      820      15       3      452             0 bash
[Mon Feb 13 13:09:00 2017] [21844]     0 21844    23842     1424      50       3       20             0 sshd
[Mon Feb 13 13:09:00 2017] [21874]  1001 21874    23924      840      50       3      137             0 sshd
[Mon Feb 13 13:09:00 2017] [21875]  1001 21875     5378      724      16       3      524             0 bash
[Mon Feb 13 13:09:00 2017] [21891]     0 21891    13972      727      32       3      149             0 sudo
[Mon Feb 13 13:09:00 2017] [21892]     0 21892    12751      612      30       3      105             0 su
[Mon Feb 13 13:09:00 2017] [21893]     0 21893     5030      861      15       3       74             0 bash
[Mon Feb 13 13:09:00 2017] [22092]   116 22092   154426    22725     107       4      608             0 mysqld
[Mon Feb 13 13:09:00 2017] [22093]     0 22093     6203      277      18       3       10             0 logger
[Mon Feb 13 13:09:00 2017] [22166]   112 22166    16869     1066      25       3        0             0 pickup
[Mon Feb 13 13:09:00 2017] [22256]    33 22256   100903     4062     155       3     1028             0 apache2
[Mon Feb 13 13:09:00 2017] [22272]    33 22272   101113     6090     157       3      919             0 apache2
[Mon Feb 13 13:09:00 2017] [22273]    33 22273   101016     4352     156       3     1034             0 apache2
[Mon Feb 13 13:09:00 2017] [22285]    33 22285   100915     4301     155       3     1030             0 apache2
[Mon Feb 13 13:09:00 2017] [22290]    33 22290   100994     3732     153       3     1036             0 apache2
[Mon Feb 13 13:09:00 2017] [22291]    33 22291   101505     5021     157       3     1031             0 apache2
[Mon Feb 13 13:09:00 2017] [22292]    33 22292   100991     3457     153       3     1048             0 apache2
[Mon Feb 13 13:09:00 2017] [22313]    33 22313   100886     3437     153       3     1049             0 apache2
[Mon Feb 13 13:09:00 2017] [22314]    33 22314   100374     1309     144       3     1139             0 apache2
[Mon Feb 13 13:09:00 2017] [22315]    33 22315   100890     3193     151       3     1054             0 apache2
[Mon Feb 13 13:09:00 2017] [22316]    33 22316   101015     5788     160       3      986             0 apache2
[Mon Feb 13 13:09:00 2017] [22317]    33 22317   100380     1658     144       3     1127             0 apache2
[Mon Feb 13 13:09:00 2017] [22318]    33 22318   100901     3771     155       3     1046             0 apache2
[Mon Feb 13 13:09:00 2017] [22319]    33 22319   100374     1309     144       3     1139             0 apache2
[Mon Feb 13 13:09:00 2017] [22321]    33 22321   100900     3686     155       3     1045             0 apache2
[Mon Feb 13 13:09:00 2017] [22326]    33 22326   101024     4417     155       3     1039             0 apache2
[Mon Feb 13 13:09:00 2017] [22327]    33 22327   100378     1309     144       3     1139             0 apache2
[Mon Feb 13 13:09:00 2017] [22328]    33 22328   101533     6627     161       3      853             0 apache2
[Mon Feb 13 13:09:00 2017] [22329]     0 22329    12235      727      29       3       11             0 cron
[Mon Feb 13 13:09:00 2017] [22330]     0 22330     1127      195       8       3        0             0 sh
[Mon Feb 13 13:09:00 2017] [22331]     0 22331     1127      202       8       3        0             0 sessionclean
[Mon Feb 13 13:09:00 2017] [22332]     0 22332     1127       26       8       3        0             0 sessionclean
[Mon Feb 13 13:09:00 2017] [22334]     0 22334     4144      185       9       3        0             0 sort
[Mon Feb 13 13:09:00 2017] [22335]     0 22335     4144      186      10       3        0             0 sort
[Mon Feb 13 13:09:00 2017] [22336]     0 22336     1127       26       8       3        0             0 sessionclean
[Mon Feb 13 13:09:00 2017] [22342]     0 22342     1127      301       8       3        0             0 sessionclean
[Mon Feb 13 13:09:00 2017] [22353]     0 22353     1127       29       8       3        0             0 sessionclean
[Mon Feb 13 13:09:00 2017] Out of memory: Kill process 22092 (mysqld) score 11 or sacrifice child
[Mon Feb 13 13:09:00 2017] Killed process 22092 (mysqld) total-vm:617704kB, anon-rss:76544kB, file-rss:14356kB

和内容/proc/meminfo:

MemTotal:        4044964 kB
MemFree:           69100 kB
MemAvailable:    3665524 kB
Buffers:         1509532 kB
Cached:          1959440 kB
SwapCached:         6288 kB
Active:          2181068 kB
Inactive:        1524292 kB
Active(anon):     133556 kB
Inactive(anon):   119404 kB
Active(file):    2047512 kB
Inactive(file):  1404888 kB
Unevictable:        3656 kB
Mlocked:            3656 kB
SwapTotal:       4194300 kB
SwapFree:        4112600 kB
Dirty:               184 kB
Writeback:             0 kB
AnonPages:        235104 kB
Mapped:            59700 kB
Shmem:             14192 kB
Slab:             220372 kB
SReclaimable:     192240 kB
SUnreclaim:        28132 kB
KernelStack:        3936 kB
PageTables:        17116 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     6216780 kB
Committed_AS:    1189376 kB
VmallocTotal:   34359738367 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
HardwareCorrupted:     0 kB
AnonHugePages:     14336 kB
CmaTotal:              0 kB
CmaFree:               0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      137216 kB
DirectMap2M:     4188160 kB

我不太熟悉oom-killer,所以我想知道这是否是由于total_vm,该列加起来为 2937127 - 如果乘以 4 kB 页面,则为 11.2 GB。

我有 4 GB 的物理 RAM 和 4 GB 的 SWAP 空间(总共 8 个),如果乘以 1.5(由于 vm.overcommit_ratio 50),将得到 12 GB。


相比之下,旧服务器从未出现任何内存问题,并且还运行了更多服务。

它还有 4GB RAM 和 4GB SWAP,以及完全相同的vm.overcommit_设置……唯一真正的区别是它是物理服务器,并且运行 CentOS (6.8)


我错过了什么吗?因为这台服务器看起来应该有足够的 RAM 可用,并且没有触及 SWAP 空间。

ubuntu memory amazon-web-services ubuntu-16.04 memory-usage
  • 1 个回答
  • 1535 Views
Martin Hope
Craig Francis
Asked: 2014-09-20 11:02:07 +0800 CST

为 nginx 中的特定位置设置 fastcgi 缓冲区

  • -1

是否可以为一个 URL 设置自定义 fastcgi 缓冲区配置?无需复制大量配置行。


因此,从基本的 PHP-FPM(通过 fastcgi)设置开始:

server {

    ...

    location / {
        try_files $uri @php-fpm;
    }

    location @php-fpm {
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root/index.php;
        ...
    }

}

它基本上将任何未知请求发送到index.php文件。

假设这个index.php脚本可以响应一个非常大的sitemap.xml文件(大约 600k)......这会导致错误:

an upstream response is buffered to a temporary file

我可以设置缓冲区:

    location @php-fpm {
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root/index.php;
        ...
        fastcgi_buffer_size 4k;
        fastcgi_buffers 170 4k;
    }

但这对于其他所有事情来说似乎有点过分(也隐藏了潜在的问题,例如我知道sitemap.xml很大,网站上应该没有其他问题)。


我希望使用:

server {

    ...

    location / {
        try_files $uri @php-fpm;
    }

    location = /sitemap.xml {
        fastcgi_buffer_size 4k;
        fastcgi_buffers 170 4k;
        try_files $uri @php-fpm;
    }

    location @php-fpm {
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root/index.php;
        ...
    }

}

但它似乎忽略了缓冲区配置。


也不可能在以下位置创建子位置@php-fpm:

location @php-fpm {
    fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root/index.php;
    ...
    location = /sitemap.xml {
        fastcgi_buffer_size 4k;
        fastcgi_buffers 256 4k;
    }
}

导致错误:

location "/sitemap.xml" cannot be inside the named location "@php-fpm"
nginx
  • 1 个回答
  • 3566 Views
Martin Hope
Craig Francis
Asked: 2014-09-09 08:43:01 +0800 CST

从 PHP-FPM 向 nginx 访问日志添加自定义变量

  • 2

可以log_format包含一系列变量,例如 $http_user_agent:

http://nginx.org/en/docs/http/ngx_http_core_module.html#variables

但是是否可以包含 PHP-FPM 中的变量?

例如,我想在access_log.

一种可能性是在 PHP 中设置一个标头,然后使用 $sent_http_XXX:

log_format inc_info '... [$sent_http_x_user_id] ...';
access_log /var/log/nginx/access.log inc_info;

<?php
  header('X-User-ID: ' . head(USER_ID));
?>

您可能应该在哪里proxy_hide_header停止将这些标头发送到客户端。

但是,如果标头已经发送,这种基于标头的方法将不起作用。例如,我register_shutdown_function()在 PHP 中使用来记录处理时间。


顺便说一句,如果您只是想要处理时间,那么 $upstream_response_time 可能会有用。


相比之下,这可以通过以下方式在 Apache 中完成:

LogFormat "... [%{USER_ID}n] ..." inc_info
CustomLog /var/log/httpd/access_log inc_info

使用相应的 PHP:

if (function_exists('apache_note')) {
    apache_note('USER_ID', USER_ID);
}

虽然apache_note()仅在 mod_php 中可用,并且不适用于 PHP-FPM。

nginx
  • 1 个回答
  • 1843 Views
Martin Hope
Craig Francis
Asked: 2014-08-09 02:28:01 +0800 CST

无论客户端密钥如何,都接受任何 SSH 连接

  • 2

想象一下我正在设置一个蜜罐,设置 SSHD 以接受任何连接的最快方法是什么?是的,这真的很不安全,所以请不要复制:-)

可能有用(放在pam_permit堆栈上auth)...我对 PAM 没有太多经验,目前正在阅读文档。

https://unix.stackexchange.com/questions/124187/accept-any-private-key-for-authentication


对于实际问题的一些背景,我有一台位于防火墙后面的客户端计算机,它尝试通过首先连接出站来设置反向 SSH 隧道(这样我就可以连接回它)......虽然它确实一直在尝试连接,就好像它使用的密钥不再有效(这很奇怪)或者其他东西失败了。

服务器日志显示客户端关闭连接,其他客户端可以正常连接...

debug1: Forked child 29472.
Set /proc/self/oom_score_adj to 0
debug1: rexec start in 5 out 5 newsock 5 pipe 7 sock 8
debug1: inetd sockets after dupping: 3, 3

Connection from CLIENT_IP port 46186
debug1: Client protocol version 2.0; client software version OpenSSH_6.0p1 Debian-4+deb7u2
debug1: match: OpenSSH_6.0p1 Debian-4+deb7u2 pat OpenSSH*

debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.0p1 Debian-4+deb7u2
debug1: permanently_set_uid: 105/65534 [preauth]
debug1: list_hostkey_types: ssh-rsa,ssh-dss [preauth]
debug1: SSH2_MSG_KEXINIT sent [preauth]
debug1: SSH2_MSG_KEXINIT received [preauth]
debug1: kex: client->server aes128-ctr hmac-md5 none [preauth]
debug1: kex: server->client aes128-ctr hmac-md5 none [preauth]

debug1: expecting SSH2_MSG_KEX_ECDH_INIT [preauth]

debug1: SSH2_MSG_NEWKEYS sent [preauth]
debug1: expecting SSH2_MSG_NEWKEYS [preauth]
debug1: SSH2_MSG_NEWKEYS received [preauth]
debug1: KEX done [preauth]
debug1: userauth-request for user tunnel service ssh-connection method none [preauth]
debug1: attempt 0 failures 0 [preauth]
debug1: PAM: initializing for "tunnel"
debug1: PAM: setting PAM_RHOST to "server"
debug1: PAM: setting PAM_TTY to "ssh"
debug1: userauth-request for user tunnel service ssh-connection method publickey [preauth]
debug1: attempt 1 failures 0 [preauth]
debug1: test whether pkalg/pkblob are acceptable [preauth]
debug1: Checking blacklist file /usr/share/ssh/blacklist.DSA-1024
debug1: Checking blacklist file /etc/ssh/blacklist.DSA-1024
debug1: temporarily_use_uid: 1001/1001 (e=0/0)
debug1: trying public key file /home/tunnel/.ssh/authorized_keys
debug1: fd 4 clearing O_NONBLOCK

debug1: restore_uid: 0/0
debug1: temporarily_use_uid: 1001/1001 (e=0/0)
debug1: trying public key file /home/tunnel/.ssh/authorized_keys2
debug1: Could not open authorized keys '/home/tunnel/.ssh/authorized_keys2': No such file or directory
debug1: restore_uid: 0/0
Failed publickey for tunnel from CLIENT_IP port 46186 ssh2
Connection closed by CLIENT_IP [preauth]
debug1: do_cleanup [preauth]
debug1: monitor_read_log: child log fd closed
debug1: do_cleanup
debug1: PAM: cleanup
debug1: Killing privsep child 29473
ssh
  • 1 个回答
  • 1630 Views
Martin Hope
Craig Francis
Asked: 2014-04-05 03:11:16 +0800 CST

LogRotate 和 Apache 的 SELinux 权限

  • 4

使用目录结构:

/www/live/website1/app/
/www/live/website1/files/
/www/live/website1/logs/

Apache 至少需要以下访问权限:

app: read-only access, but read-write is fine (files already chmod 0644)
files: read-write access
logs: read-write access

其中以下两条规则已通过以下方式设置:

/usr/sbin/semanage fcontext -a -t httpd_sys_content_t "/www/live/.*/.*";
/usr/sbin/semanage fcontext -a -t httpd_log_t "/www/live/.*/logs(/.*)?";

/sbin/restorecon -vr "/www";

哪些已应用,并且似乎工作正常......但是 LogRotate 并不高兴。

LogRotate 配置当前为:

/www/live/*/logs/*access_log /www/live/*/logs/*access_log_443 {
    weekly
    rotate 52
    missingok
    notifempty
    nodateext
    sharedscripts
    postrotate
        /usr/sbin/apachectl graceful > /dev/null
    endscript
}

然而,这似乎被 SELinux 阻止了,当它试图点击与/www/live文件夹相关的 inode 时,条目出现在 audit.log 中(在下面的示例中为 262146)......因为它可能试图列出 /www 中的文件夹/居住/。

type=AVC msg=audit(1396579563.324:316060): avc:  denied  { read } for  pid=12336 comm="logrotate" name="live" dev=dm-0 ino=262146 scontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:default_t:s0 tclass=dir
type=SYSCALL msg=audit(1396579563.324:316060): arch=c000003e syscall=2 success=no exit=-13 a0=7fff2cef68b0 a1=90800 a2=7fff2cef6b5a a3=8 items=0 ppid=12334 pid=12336 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=35531 comm="logrotate" exe="/usr/sbin/logrotate" subj=system_u:system_r:logrotate_t:s0-s0:c0.c1023 key=(null)

那么我应该设置这个父目录的上下文是什么?

/usr/sbin/semanage fcontext -a -t default_t "/www(/.*)";

我知道的地方default_t不起作用,也不起作用var_t......作为参考,我真的不在乎什么可以看到这些文件夹,因为它们已经是 chmod 0755。


对于奖励积分......有没有一种简单的方法可以查看程序拥有的完整权限列表?我知道 LogRotate 必须能够访问httpd_log_t和var_log_t.

令人讨厌的是,手动运行 LogRotate 似乎绕过了这些限制,因为我假设它继承了用户权限(与通过 cron 运行时不同)。

linux
  • 1 个回答
  • 11176 Views
Martin Hope
Craig Francis
Asked: 2014-04-03 03:45:36 +0800 CST

带 IMAP 的 PHP CLI,5 秒启动延迟

  • 3

在 RedHat Enterprise 6.5 服务器上安装“php-imap-5.3.3-27.el6_5.x86_64”后,PHP 的 CLI 版本总是需要 5 秒才能运行:

php -n -d extension=imap.so -v
PHP 5.3.3 (cli) (built: Dec  5 2013 07:09:40) 
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

real  0m5.023s
user  0m0.006s
sys   0m0.010s

请注意,“-n”禁用通常的 php.ini,并且仅加载“imap.so”(仅用于调试目的)。

你知道是什么原因造成的吗?它似乎正在暂停某事,可能是超时?

SELinux 审计日志中没有提到任何内容,但有趣的是,加载库似乎出于某种原因正在尝试(失败?)连接到 DNS 服务器?

strace -s -c php -n -d extension=imap.so -v

  execve("/usr/bin/php", [...], [/* 24 vars */]) = 0
  brk(0)                                  = 0x15e2000

[...]

  socket(PF_INET, SOCK_DGRAM|SOCK_NONBLOCK, IPPROTO_IP) = 3
  connect(3, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.1.1")}, 16) = 0
  poll([...], 1, 0)                       = 1 ([...])
  sendto(3, ""..., 38, MSG_NOSIGNAL, NULL, 0) = 38
  poll([...], 1, 5000)                    = 1 ([...])
  sendto(3, ""..., 38, MSG_NOSIGNAL, NULL, 0) = 38
  poll([...], 1, 4999)                    = 1 ([...])
  ioctl(3, FIONREAD, [254])               = 0
  recvfrom(3, ""..., 2048, 0, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.1.1")}, [16]) = 254
  poll([...], 1, 4998

[... 5 second pause ...]

  )                    = 0 (Timeout)
  poll([...], 1, 0)                       = 1 ([...])
  sendto(3, ""..., 38, MSG_NOSIGNAL, NULL, 0) = 38
  poll([...], 1, 5000)                    = 1 ([...])
  ioctl(3, FIONREAD, [254])               = 0
  recvfrom(3, ""..., 2048, 0, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.1.1")}, [16]) = 254
  poll([...], 1, 4998)                    = 1 ([...])
  sendto(3, ""..., 38, MSG_NOSIGNAL, NULL, 0) = 38
  poll([...], 1, 4998)                    = 1 ([...])
  ioctl(3, FIONREAD, [97])                = 0
  recvfrom(3, ""..., 1794, 0, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.1.1")}, [16]) = 97
  close(3)                                = 0
  alarm(0)                                = 0

[...]

用 dig 检查后,DNS 似乎响应良好:

dig +short example.com @192.168.1.1
93.184.216.119

至于强制性的 strace 计数输出:

strace -c php -n -d extension=imap.so -v

PHP 5.3.3 (cli) (built: Dec  5 2013 07:09:40)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 27.14    0.000019           0       103           mmap
 25.71    0.000018           0        48           read
 25.71    0.000018           5         4           socket
 21.43    0.000015           0        47           fstat
  0.00    0.000000           0         1           write
  0.00    0.000000           0        49         2 open
  0.00    0.000000           0        51           close
  0.00    0.000000           0         6         2 stat
  0.00    0.000000           0         8           poll
  0.00    0.000000           0         1           lseek
  0.00    0.000000           0        54           mprotect
  0.00    0.000000           0        19           munmap
  0.00    0.000000           0        14           brk
  0.00    0.000000           0         4           rt_sigaction
  0.00    0.000000           0         6           rt_sigprocmask
  0.00    0.000000           0        12           ioctl
  0.00    0.000000           0         4         3 access
  0.00    0.000000           0         3           alarm
  0.00    0.000000           0         3         2 connect
  0.00    0.000000           0         5           sendto
  0.00    0.000000           0         3           recvfrom
  0.00    0.000000           0         3           recvmsg
  0.00    0.000000           0         1           bind
  0.00    0.000000           0         1           getsockname
  0.00    0.000000           0         1           execve
  0.00    0.000000           0         1           uname
  0.00    0.000000           0         4           fcntl
  0.00    0.000000           0         1           getcwd
  0.00    0.000000           0         1           getrlimit
  0.00    0.000000           0         1           statfs
  0.00    0.000000           0         1           arch_prctl
  0.00    0.000000           0        11         1 futex
  0.00    0.000000           0         1           set_tid_address
  0.00    0.000000           0         1           set_robust_list
------ ----------- ----------- --------- --------- ----------------
100.00    0.000070                   473        10 total

和 ltrace(有相当多的 memcpy/free/memset 时间):

ltrace -c php -n -d extension=imap.so -v

PHP 5.3.3 (cli) (built: Dec  5 2013 07:09:40)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

% time     seconds  usecs/call     calls      function
------ ----------- ----------- --------- --------------------
 41.92    7.377898         790      9331 memcpy
 32.32    5.689380         581      9788 free
 11.48    2.021224       14972       135 memset
  7.79    1.371877         147      9297 malloc
  2.86    0.503343         157      3191 strlen
  1.62    0.285582         147      1940 __ctype_tolower_loc
  0.84    0.147136         145      1010 strrchr
  0.37    0.065134         148       440 calloc
  0.21    0.036233         151       239 realloc
  0.14    0.024520       12260         2 getprotobyname
  0.12    0.020486       20486         1 dlopen
  0.07    0.012101         124        97 strcasecmp
  0.07    0.011930         142        84 strtol
  0.06    0.010258         170        60 strchr
  0.02    0.004310         172        25 _setjmp
  0.02    0.003569         148        24 __ctype_b_loc
  0.02    0.002862        2862         1 ERR_load_crypto_strings
  0.01    0.001339         148         9
  0.01    0.001298        1298         1 using_history
  0.01    0.001027         171         6 strncasecmp
  0.01    0.000898         898         1 dlclose
  0.01    0.000893         127         7 getenv
  0.00    0.000682         170         4 fflush
  0.00    0.000371         371         1 tzset
  0.00    0.000358         179         2 xmlParserInputBufferCreateFilenameDefault
  0.00    0.000354         354         1 ERR_load_ERR_strings
  0.00    0.000351         351         1 setlocale
  0.00    0.000346         173         2 xmlSetGenericErrorFunc
  0.00    0.000341         170         2 xmlOutputBufferCreateFilenameDefault
  0.00    0.000326         163         2 signal
  0.00    0.000326         163         2 __strtok_r
  0.00    0.000312         312         1 SSL_library_init
  0.00    0.000303         303         1 OpenSSL_add_all_ciphers
  0.00    0.000282         282         1 EVP_cleanup
  0.00    0.000253         253         1 xmlInitParser
  0.00    0.000245         245         1 OPENSSL_add_all_algorithms_noconf
  0.00    0.000224         224         1 write
  0.00    0.000223         223         1 sigprocmask
  0.00    0.000191         191         1 OpenSSL_add_all_digests
  0.00    0.000187         187         1 xmlCleanupParser
  0.00    0.000178         178         1 xmlSetStructuredErrorFunc
  0.00    0.000176         176         1 xmlRelaxNGCleanupTypes
  0.00    0.000175         175         1 ERR_load_EVP_strings
  0.00    0.000175         175         1 X509_get_default_cert_area
  0.00    0.000172         172         1 sigemptyset
  0.00    0.000171         171         1 xmlResetLastError
  0.00    0.000170         170         1 strncmp
  0.00    0.000169         169         1 time
  0.00    0.000169         169         1 sigaddset
  0.00    0.000167         167         1 SSL_get_ex_new_index
  0.00    0.000154         154         1 __gmp_set_memory_functions
  0.00    0.000153         153         1 pcre_version
  0.00    0.000151         151         1 gnu_get_libc_version
  0.00    0.000145         145         1 __xmlParserVersion
  0.00    0.000092          92         1 getcwd
  0.00    0.000079          79         1 dlsym
  0.00    0.000072          72         1 __strdup
------ ----------- ----------- --------- --------------------
100.00   17.601541                 35732 total

相关但未通过以下方式解决:

http://superuser.com/questions/336177/running-php-as-cli-takes-a-long-time
http://trac.macports.org/ticket/35222
https://bugs.php.net/bug.php?id=41968
https://github.com/liip/php-osx/issues/102
domain-name-system
  • 1 个回答
  • 1208 Views
Martin Hope
Craig Francis
Asked: 2014-01-19 13:25:33 +0800 CST

在 Debian 机器上审核文件

  • 5

是否可以列出系统上不属于某个包的每个文件?或者他们是否被修改过?

可能需要使用类似的东西:apt-get、apt-files、dpkg-query 等

就上下文而言,假设继承了无法格式化的旧服务器,并且您想检查每个文件是否都应如此...我知道在 Debian 版本之间升级或删除后不会出现这种情况一个没有“--purge”的包,因为它似乎留下了很多(通常是配置)文件。

同样,如果该服务器要更换为新服务器,您要确保所有配置差异(与基本安装相比)已被转移(或如果不再相关则忽略 - 例如添加了胭脂“端口”行到 sshd_config)。

它还有助于确定是否在不使用 apt-get 的情况下安装了任何东西。

ubuntu
  • 4 个回答
  • 908 Views
Martin Hope
Craig Francis
Asked: 2012-06-20 07:00:47 +0800 CST

检查 Git 存储库中是否存在文件夹...测试 bash 中是否存在以 NULL 作为分隔符的子字符串

  • 1

我有一个用于多个项目的通用 git“post-receive”脚本,如果根目录中存在 /app/ 或 /public/ 文件夹,它需要执行不同的操作。

使用:

FOLDERS=`git ls-tree -d --name-only -z master`;

我可以看到目录列表,并且我想使用 bash 中的 RegExp 支持来运行如下命令:

if [[ "$FOLDERS" =~ app ]]; then
    ...
fi

但如果有类似“应用程序”文件夹的东西,那将不起作用......我在 git“ls-tree”命令中指定了“-z”选项,所以我可以使用 \0(空)字符作为分隔符,但不确定如何在 bash RegExp 中测试它。

同样,我知道在 ls-tree 命令中支持指定特定路径,然后可以将其通过管道传递给“wc -l”,但我认为获取根目录的完整目录列表会更快(不是递归)然后使用返回的输出测试 2 个(或更多)文件夹。

可能与: https ://stackoverflow.com/questions/7938094/git-how-to-check-which-files-exist-and-their-content-in-a-shared-bare-repos

bash regex git
  • 1 个回答
  • 4864 Views
Martin Hope
Craig Francis
Asked: 2009-07-13 15:51:41 +0800 CST

BIND/Named:禁用递归,客户端使用替代服务器

  • 2

我正在设置一个简单的 DNS 服务器(BIND/Named),它在 OSX 笔记本电脑上本地运行。

其目的是将“*.laptop.example.com”的所有请求解析为“192.168.2.2”——这是手动分配的虚拟网络接口的 IP 地址(不是 DHCP)。

我正在使用虚拟网络接口(由 Parallels 提供)以确保 IP 地址始终保持不变(eth0 在连接到不同网络时将更改其 IP 地址),并确保它始终可用(eth0 已禁用/不可用未插入网络电缆时)。

我一直在使用以下设置:

options {

  ...

  forwarders {
    192.168.1.1;
  };
  forward only;

};

但是,这需要每次笔记本电脑更改网络时更新配置(因为大多数网络使用不同的 DNS 地址)。

我想放弃这个要求,这样如果 BIND/Named 不能识别域名(即它不是“laptop.example.com”的子域),那么它会返回一个错误,以便笔记本电脑可以尝试第二个它记录在案的 DNS 地址(从 DHCP 获取的地址)。

一种可能性是使用:

options {

  ...

  forwarders {
  };
  forward only;

  recursion no;

};

这确实阻止了它花费 3 多秒来查询 ROOT 服务器......但是客户端将该响应解释为“域不存在”,而不是可以通过尝试下一个服务器来修复的错误。

domain-name-system mac-osx bind
  • 4 个回答
  • 1327 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve