首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >让用户在登录时自动运行复杂命令的步骤

让用户在登录时自动运行复杂命令的步骤
EN

Ask Ubuntu用户
提问于 2016-11-29 19:50:53
回答 1查看 139关注 0票数 1

我已经把我的系统搞砸了一次,所以我会更具体地问:

需要执行哪些步骤,以便命令可以在启动时以sudo权限运行?

到目前为止,我知道的是:我有一个包含“”的命令:

代码语言:javascript
运行
复制
java -jar /home/joe/minecraft/minecraft_server/MCpal.jar /media/joe/Chest/mc_backups 12288 server.jar "overviewer.py --rendermodes=smooth-lighting {2}/Galamor /home/joe/minecraft/Overviewer/map"

我转到Preferences -> Default applications for LXSession并将行:lxterminal -e COMMAND添加到autostart部分。

这将启动一个运行我的命令的终端(在本例中,启动我的Min克拉夫特服务器管理器)。此进程中的某些内容需要sudo权限。因为我自己编写了这个程序,而且我信任Mojang,所以我只想在sudo级别运行这个命令,而不需要输入我的密码。

我尝试使用sudo visudo给我的用户在不输入密码的情况下运行它的权限。我好像搞错了合成器。

我认为应该是这样的:

代码语言:javascript
运行
复制
joe ALL=(ALL) NOPASSWD: java -jar /home/joe/minecraft/minecraft_server/MCpal.jar /media/joe/Chest/mc_backups 12288 server.jar "overviewer.py --rendermodes=smooth-lighting {2}/Galamor /home/joe/minecraft/Overviewer/map"

这里的错误在哪里?

如果你能一步一步地回答,我会很高兴的。也许我用错了行来键入它或者任何可能的东西。

EN

回答 1

Ask Ubuntu用户

发布于 2016-11-29 20:45:09

通常,在引导过程中的某个时间,您会使用服务作为特定的用户运行。

我认为“如何在登录时运行一个Min克拉夫特服务器”的理想解决方案是创建一个新用户minecraft,并确保您的HTTP (apachenginx)能够访问overviewer生成的文件。当您运行overviewer时,您希望以minecraft用户的身份执行此操作。

下面假设/home/minecraft/minecraft-1.7/是一个目录,它包含您的Min克拉夫特服务器文件,比如world目录,并且在该目录中有minecraft_server.jar。此外,nginx还用作HTTP服务器。

您可以使用sudo useradd minecraft -m创建此用户。通过不设置密码,您将只能使用sudo su - minecraft成为此用户。

minecraft用户将有以下cron条目(crontab -e作为minecraft):

代码语言:javascript
运行
复制
0 * * * * /usr/bin/overviewer.py --rendermodes=smooth-lighting,cave /home/minecraft/minecraft-1.7/world/ /home/minecraft/minecraft-1.7/www-overviewer/

理想情况下,您可以使用upstart (/etc/systemd/system/minecraft-server.service)运行Min克拉夫特服务器:

代码语言:javascript
运行
复制
[Unit] 
Description=Minecraft Server

[Service]
WorkingDirectory=/home/minecraft/minecraft-1.7/
User=minecraft
Group=minecraft
Restart=on-failure
RestartSec=20 5
ExecStart=/usr/bin/java -Xms1536M -Xmx1536M -jar minecraft_server.jar nogui

[Install]
WantedBy=multi-user.target

启用它在引导时用sudo systemctl enable minecraft-server启动,然后告诉它现在用sudo systemctl start minecraft-server启动。

使用以下...while配置NGINX:

代码语言:javascript
运行
复制
server {
    listen 8888;
    client_max_body_size 50M;

    server_name _ minecraft.DOMAIN.tld

    charset UTF-8;

    expires max;
    gzip                on;
    gzip_buffers        16 8k;
    gzip_comp_level     4;
    gzip_http_version   1.0;
    gzip_min_length     1280;
    gzip_types          text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js;
    gzip_vary           on;
    gzip_static         on;

    add_header Cache-Control  "public";

    location / {
        root  /home/minecraft/minecraft-1.7/www-overviewer;
    }

}

没有理由将minecraftoverviewer等作为根用户运行,应该避免。

票数 2
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/855081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档