• 坑爹的ubuntu /bin/sh


    写了一个停止mongodb的脚本,代码片段如下:

     1 #!/bin/bash
     2 
     3 # stop mongo
     4 echo "stop mongodb..."
     5 MONGO_PID=`ps -ef | grep mongod | grep -v grep  | awk '{print $2}'`
     6 if [[ a${MONGO_PID} == a'' ]]
     7 then
     8     echo "mongodb is not running..."
     9 else
    10     kill -2 ${MONGO_PID}
    11     sleep 5
    12     if ps -ef  | grep -v grep | grep -q mongod
    13    then
    14         echo "mongodb stop failed"
    15     else
    16         echo "mongodb stop successful"
    17     fi
    18 fi

    执行方式为

    sh stop.sh

    在centos上执行正常,在ubuntu上执行就报错:

    欸我就纳闷了,哥的代码没错啊,找了半天没找到原因,求助stackoverflow,找到原因:

    换用以下执行脚本的方式就不会报错

    ./stop.sh

    查了下dash是什么东西:

    Debian和Ubuntu中,/bin/sh默认已经指向dash,这是一个不同于bash的shell,它主要是为了执行脚本而出现,而不是交互,它速度更快,但功能相比bash要少很多,语法严格遵守POSIX标准。
    Ubuntu用的少了,坑大了,记录下

  • 相关阅读:
    Javascript面向对象编程(三):非构造函数的继承
    zabbix java api
    Hbase架构与原理
    Hbase集群监控
    kafka使用场景
    Java curator操作zookeeper获取kafka
    Docker网络基础:快速指南
    JPA Advanced Mappings(映射)
    9.Spark Streaming
    7.spark共享变量
  • 原文地址:https://www.cnblogs.com/hoods/p/5499975.html
Copyright © 2020-2023  润新知