我希望用户在系统上运行具有负的 nice 值的特定进程。我不能简单地将进程分叉到后台,因为这个特定程序是一个 minecraft 服务器,我依靠命令行来控制服务器。
我当前的 bash 脚本如下所示(重要部分):
sleep 10 && \
sudo renice -n $NICENESS $(ps -u $(id -u) -o "%p:%c" | sed -n "s/:java$//p") & \
java -Xmx8G -Xms2G -jar minecraft_server.jar nogui
Run Code Online (Sandbox Code Playgroud)
sleep只是延迟renice. renice它本身ps用于使用用户自己的 ID 检查 java 进程。在不同的用户下可能有其他 java 生成实例,但 minecraft 服务器在其自己的用户minecraft下运行。
我显然不想每次启动服务器时都输入密码。
来自/etc/sudoers:
minecraft ALL = NOPASSWD: /etc/renice
Run Code Online (Sandbox Code Playgroud)
有没有更优雅的方法来做到这一点?简单地使用nice不是一个选项,sudo nice bash结合NOPASSWD:选项将是一个很大的安全问题。
我在我的系统上安装了 Gentoo clean,除了我的 /home,但我删除了所有可能对声音产生影响的隐藏文件夹(.mplayer .pulse* .config .esd_auth 等等)并且使用新用户时adduser mistertest -m -G audio,video,users结果是一样的,没有当我在 mplayer 中播放文件时发出声音。
它是一个 Z68 芯片组,我在我的 CPU 中使用 Intel IGP H2000,所以这不应该是我主板上的 spdif 连接器的问题,我想我已经在内核中安装了所有正确的模块。我没有额外的硬件来检查我的声音是否正常工作(没有耳机或外部扬声器),但我想问题要么是配置不当,要么是内部 spdif(如果有的话)。
dronemother ~ # lsmod | grep snd
snd_hda_codec_hdmi 22705 1
snd_hda_codec_realtek 190506 1
snd_hda_intel 21727 3
snd_hda_codec 63422 3 snd_hda_codec_hdmi,snd_hda_codec_realtek,snd_hda_intel
snd_hwdep 5726 1 snd_hda_codec
snd_pcm 69969 3 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec
snd_timer 17697 1 snd_pcm
snd 53814 13 snd_hda_codec_hdmi,snd_hda_codec_realtek,snd_hda_intel,snd_hda_codec,snd_hwdep,snd_pcm,snd_ timer
soundcore 5009 1 snd
snd_page_alloc 6641 2 snd_hda_intel,snd_pcm
dronemother ~ # lspci -v
# cut other …Run Code Online (Sandbox Code Playgroud) 我刚刚问了一个关于将进程分叉到后台睡眠的问题。
我自己想出的符号是这样的:
sleep 10 && echo "hello world" &
Run Code Online (Sandbox Code Playgroud)
这个对不同问题的回答使用了不同的格式。
( sleep 10 ; echo "hello world" ) &
Run Code Online (Sandbox Code Playgroud)
我知道&&只有在第一个进程返回 true 时才允许第二个进程启动。睡眠会失败吗?是否存在我应该更喜欢其中一种的情况?
我的问题真的很简单,但听起来很复杂,但我对此的经验从零到零。
我已经使用 gentoo 设置了一个盒子,它有自己的半静态 WAN-IP 并充当我的 LAN 的路由器。我可以访问网络上其他地方的路由器,该路由器具有动态 IP 并已注册到 dyndns。我的计划是将特定流量从我的 gentoo-box 重定向到路由器以利用隧道和动态 IP。
我的想法是在我的 gentoo-box 上安装一个代理,它默认使用 VPN 连接到路由器。应该允许 LAN 上的每台计算机和 WAN 上的特定计算机(有权访问代理)使用此代理,但不应强制流量通过路由器。这排除了只使用 iptables 的想法。
示例:我想通过 VPN 重定向 Firefox 流量,而不是 Opera 流量。我将 Firefox 设置为使用本地代理,它获取远程路由器的动态 IP,Opera 仍然使用我的半静态 IP 浏览。
这可能吗?要使用哪个软件?任何进一步的想法?
btw: 路由器支持 PPTP、IPSec 和 L2TP
编辑:如果您对标题有更好的想法,请编辑或提出建议,我不知道如何称呼我的问题:(
我在我的 HomeServer 上使用 Gentoo。我的硬盘是使用 mdadm 镜像的 raid1。
我的问题是如何正确引导 /boot 分区?
/dev/md1 consists of /dev/sdc2 & /dev/sdd2 mounted on /boot
Run Code Online (Sandbox Code Playgroud)
在我grub.cfg的 uuid 中,/dev/md1但在启动时阵列当然还没有准备好。
最简单的方法是取消突袭 /boot 分区,但这不是我想要做的。
那么,我如何找出raid成员的UUID?ls -l /dev/disk/by-uuid只显示 .uuid 的/dev/md1. 当我解开磁盘时,我无法挂载它们以获取它们的 UUIDmount: unknown filesystem type 'linux_raid_member'
那么我怎样才能让 Grub2 引导这些磁盘,它是否能够在它们进入突袭之前确定内容?(它们实际上是 ext2)。
我应该补充一点,我使用 gpt 分区表,因此我/dev/sdc1 and /dev/sdd1在两个驱动器上都有一个小分区来托管 bios_grub 分区。那些不是被突袭的自动取款机。
正如吉尔斯回答下面的评论中指出的那样,我的问题仍然存在。Grub 找不到设备,告诉我
error: no such device: 9f81a-(device uuid)-5580.
entering rescue mode...
grub rescue>
Run Code Online (Sandbox Code Playgroud)
后来我加了几行
insmod part_msdos
insmod part_gpt
insmod raid
insmod mdraid …Run Code Online (Sandbox Code Playgroud)