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
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1297062
Accepted
killshot13
killshot13
Asked: 2020-12-03 17:27:48 +0800 CST2020-12-03 17:27:48 +0800 CST 2020-12-03 17:27:48 +0800 CST

如何在不使用 bash 的情况下配置脚本文件来管理 Ubuntu 上的服务?

  • 772

在 WSL2(Linux 的 Windows 子系统)上使用 Ubuntu 20.04(焦点)作为 LAMP-stack/WordPress 开发环境。

由于所需的服务不会在 Windows 10(主/父操作系统)启动时自动运行,因此我创建了一个/start文件来调用 start on openssl、apache和mysql并回显确认语句。它看起来就像这个代码块。

    #!/bin/sh

    service ssh start
    service mysql start
    service apache2 start

    echo "System ready."

现在,当我打开一个bash终端时,我只是sudo -s用来切换到 root 并调用/start. 输出看起来像这样。

    focal@DESKTOP-6FLTF67:~$ sudo -s
    [sudo] password for focal:
    root@DESKTOP-6FLTF67:/home/focal# /start
    * Starting OpenBSD Secure Shell server sshd                                               [ OK ]
    * Starting MySQL database server mysqld                                                   [ OK ]
    * Starting Apache httpd web server apache2                                                                    
    * 
    System ready.
    root@DESKTOP-6FLTF67:/home/focal#

我如何使这项工作用于服务重启和关闭目的。是否允许为这些命令进行配置?因为我放置服务的顺序无关紧要,所以当我保存/restart或/stop文件并运行它时,我不断收到此错误。

    focal@DESKTOP-6FLTF67:~$ sudo -s
    root@DESKTOP-6FLTF67:/home/focal# /start
    * Starting OpenBSD Secure Shell server sshd                                                [ OK ]
    * Starting MySQL database server mysqld                                                    [ OK ]
    * Starting Apache httpd web server apache2                                                                    
    *
    System ready.
    *
    root@DESKTOP-6FLTF67:/home/focal# /stop
    bash: /stop: Permission denied
    *
    root@DESKTOP-6FLTF67:/home/focal# /restart
    bash: /restart: Permission denied
    *
    root@DESKTOP-6FLTF67:/home/focal# /stop
    bash: /stop: Permission denied

我已经尝试过关闭一个服务之前/之后关闭另一个服务的所有变体,等等,并根据工作/start版本仔细检查了文件,它们似乎很好。

有人可以帮助我了解我所缺少的吗?先感谢您!

bash services mysql apache2 openssl
  • 1 1 个回答
  • 353 Views

1 个回答

  • Voted
  1. Best Answer
    killshot13
    2021-04-26T03:21:53+08:002021-04-26T03:21:53+08:00

    在阅读了由类似问题引发的更长的SO 讨论之后,我终于明白了我所经历的行为背后的“原因”。

    所以这就是答案。

    在上面的评论中@muru 提出了一些尖锐的问题之后,我突然意识到,虽然我已将#!/bin/sh每个文件的顶部包含在内,但我并没有运行chmod +x $filename.sh以使文件(程序)完全可执行。

    因此,调用sh ./stop.sh或bash ./stop.sh工作正常,但我试图./stop.sh直接调用,但没有。

    这是解决方案的前后视图。

    示例脚本 ~/run.sh

        #!/bin/sh
    
            service ssh start
            service mysql start
            service apache2 start
    
            echo "This version works too"
    

    之前(这是我最初遇到的。)

        ❯ sudo sh ./run.sh
         * Starting OpenBSD Secure Shell server sshd                   [ OK ]
         * Starting MySQL database server mysqld                       [ OK ]
        * Starting Apache httpd web server apache2                                                                               
        *
        This version works too
        
        ❯ sudo ./run.sh
        sudo: ./run.sh: command not found
    

    之后(运行后sudo chmod +x run.sh)

        ❯ sudo ./run.sh
         * Starting OpenBSD Secure Shell server sshd                   [ OK ]
         * Starting MySQL database server mysqld                       [ OK ]
         * Starting Apache httpd web server apache2                                                          
        *
        This version works too
    

    如您所见,只有在使用chmod +x run.sh.

    注意:此外,我建议sudo尽可能使用运行脚本,而不是root像我在原始问题中那样使用。更安全的选择是从属于sudoers组的用户帐户中运行这些命令,这有助于限制直接使用引起的安全和用户错误问题root。

    • 0

相关问题

  • bashrc 还是 bash_profile?

  • 延长笔记本电脑和笔记本电脑电池寿命的技巧

  • 备份 bash 脚本未压缩其 tarball

  • 如何将 MySQL 数据文件移动到不同的分区?

  • 命令列出启动时启动的服务?

Sidebar

Stats

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

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve