这个蛋糕上的命令有什么作用?

 永川青峰_915 发布于 2023-01-17 21:20

为了庆祝我作为网络开发者总结的3个月试用期,我将为办公室制作一个终端蛋糕.在我对这个主题的研究中,我看到了这张照片,并想知道这些命令是做什么的?

蛋糕图片

1 个回答
  • 该管道尝试以相当严厉的Rube Goldbergian方式停止系统上的所有Apache进程.

    管道:

      获取系统上所有进程的列表.(ps axww)

      这种方法是一种过度扩展,提供的数据超过实现所需结束所需的实际数据,这将在以后引起问题.

      查找包含的行httpd,这是Apache Web服务器的常用进程名称.它可能会意外地匹配其他东西,但在一台本应该只是一个Web服务器的机器上,它是相当安全的.

      在这个阶段你得到这样的行:

      17652 ?        Ss     0:00 /usr/bin/httpd -blah -args
      

      管道也会匹配vi /etc/httpd/conf.d/mime.conf命令.

      过滤掉包含grep(grep -v grep)的行,因为第一行grep也会找到自己:

      24180 pts/0    R+     0:00 grep httpd
      

      如果不对此行进行过滤,则可能会grep在管道完成之前终止第一个实例,从而破坏管道.ps在Linux上的排序输出的PID默认情况下,这样以来的PID环绕,grep可能出现前httpd,导致蛋糕命令实际上没有任何效果可言.

      用于xargskill -9在找到的每一行上运行.

      也就是说,它构建这样的命令并运行它们:

      kill -9 17652 ?        Ss     0:00 /usr/bin/httpd -blah -args
      

      这可能会或可能不会做你想要的.它有时可以工作,因为当你ps使用axww标志运行时,进程ID(PID)是第一件事.(还有其他方法可以ps在第一线上运行的地方运行.)蛋糕装饰器希望系统上的实现kill不会在ps输出线上的PID之后获得所有其他垃圾时进行barf .

      POSIX没有说明kill(1)非PID参数是什么.它可以在第一个非数字参数处停止,它可能为它找到的每个这样的参数提供错误,或者它可以默默地忽略它们.如果找到的行ps恰好包含有效PID的数字,则蛋糕上的命令可能最终导致您不想要的进程被杀死.

    pgrep如果它可用,那么在这里使用会好得多:

    # pgrep httpd | xargs kill -9
    

    命令不仅更短,而且可靠地完成您真正想要的操作.它不匹配,然后过滤掉grep进程,它只匹配进程名称,并且它不会传递非PID垃圾kill.

    系统pgrep通常也有命令pkill,它将该管道包装成一个命令:

    # pkill httpd
    

    如果你愿意的话,你可以在-9这里添加强制终止httpd进程,但我会从这里开始关闭它.我已经命令这些命令越来越具有歧视性,所以如果你愿意的话,让它们变得越来越残酷也是有道理的.

    如果您的系统没有pgreppkill,它可能具有pidof:

    # kill $(pidof httpd)
    

    另一种方法是使用killall:

    # killall httpd
    

    请注意,该killall命令可能会在非Linux操作系统上执行不同的操作.

    但最安全的方法是使用操作系统的正常"停止Web服务器"命令.例子:

    # service httpd stop
    # /etc/init.d/httpd stop
    # systemctl stop httpd.service
    # launchctl unload /System/Library/LaunchDaemons/org.apache.httpd.plist
    

    Apache包含一个"很好地停止Apache"命令:

    # apachectl stop
    

    但是,该命令只会阻止Apache正常运行.上面的OS特定命令也可以执行其他清理操作.如果Apache是​​由OS启动的,那么您也应该使用操作系统自己的命令来停止它.

    2023-01-17 21:28 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有