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

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

有什么步骤,以便命令可以在启动时使用sudo权限运行?

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

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到自动启动部分。

这启动了一个终端运行我的命令(在这种情况下,启动我的Minecraft服务器管理器)。 此过程中的某些内容需要sudo权限。 由于我自己写了这个程序,因为我相信Mojang,我只想在sudo级别运行这个命令,而不需要输入我的密码。

我尝试使用sudo visudo为我的用户提供运行它的权限,而无需输入密码。 我似乎没有让synthax正确。

这是我认为它应该是:

 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" 

这里的错误在哪里?

如果你能一步一步地回答,我会很高兴。 也许我使用了错误的行来输入它或者它可能是什么。

通常,您将使用服务在引导期间的特定时间以特定用户身份运行。

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

以下假设/home/minecraft/minecraft-1.7/是包含您的/home/minecraft/minecraft-1.7/服务器文件的目录,例如world目录,并且在该目录中,您有minecraft_server.jar。 此外, nginx用作HTTP服务器。

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

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

 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 )运行Minecraft服务器:

 [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

…在配置NGINX时:

 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; } } 

没有理由以root身份运行minecraftoverviewer等,应该避免。