小编joh*_*ith的帖子

Crontab 错误:[user] 没有 crontab

每次执行以下命令时,我都会看到错误。为什么?

$crontab -l
no crontab for server
Run Code Online (Sandbox Code Playgroud)

其中server是用户帐户。

出现这个问题是因为 crontab 中的脚本不起作用,所以我试图分解问题。这是我投入使用的内容crontab -e

crontab -e
@reboot /usr/bin/teamspeak3-server_linux-amd64/ts3server_minimal_runscript.sh
Run Code Online (Sandbox Code Playgroud)

我按 ctrl + o 并保存它,重新启动并发现脚本无法启动(即使我从 GUI 双击脚本本身也能工作)。如果我crontab -l在重新启动后执行,我发现我收到与上述相同的错误。即使在重新启动之前,如果我crontab -e在文件中保存此命令后尝试打开它,代码行也不存在。

cron

11
推荐指数
2
解决办法
8万
查看次数

创建启动器快捷方式

我正在使用 Debian,我想在启动器上创建一个图标,单击它可以打开我的 Teamspeak 服务器。目前,我必须转到终端并键入以下命令。

cd /usr/bin/teamspeak3-server_linux-amd64
./ts3server_minimal_runscript.sh
Run Code Online (Sandbox Code Playgroud)

这会启动我的 Teamspeak 3 服务器,让终端保持打开状态,这很费时,而且仅为此目的而打开终端很烦人。在 Ubuntu 中,我只是制作了一个 .desktop 文件并将图标拖到我的启动器上,这要好得多。不确定如何在 Debian 上做到这一点,有人可以建议吗?

desktop-shortcuts

6
推荐指数
1
解决办法
2万
查看次数

算术扩展如何处理没有 $(美元)符号的变量?

我认为下面的行应该以不同的方式编写,并且该命令应该会出错。

$ echo $((x=2, y=3, x+y))
5
Run Code Online (Sandbox Code Playgroud)

我认为写这个的方法是:

$ echo $((x=2, y=3, $x+$y))
5
Run Code Online (Sandbox Code Playgroud)

两者都有效,这现在让我感到困惑。我假设我在某个地方有误解,所以我将解释我如何确定第一个回声是错误的。x+y 没有引用变量,所以 bash 怎么可能知道 x 和 y 是变量。如果你告诉我这是因为表达式开头的 $ ,那么你一定是错的,因为 x 和 y 会被定义在 $x=2 和 $y=2 处,这将是定义变量的不正确方法。所以我完全不知道 bash 如何知道 x 和 y 是变量。

bash arithmetic

5
推荐指数
1
解决办法
1350
查看次数

我只使用 dhcpcd 并且我想让 /etc/resolv.conf 添加搜索domain.local

我有许多不使用网络管理器的计算机,仅使用 dhcpcd 来设置 IP 地址。例如,我的树莓派4。我在/etc/dhcpcd.conf文件中静态分配了IP地址,并且它有效,我很高兴。我想要做的是,如果我输入 nslookup machine2 (例如),它会将配置的域附加到该查找。

在另一台使用 dhcpcd 的机器(我的 ArchLinux PC)中,我通过 dhcpcd 将地址配置为使用 dhcp(即这次不是静态的)。在我的 DHCP 服务器上,我已将其设置为将“域名”字段指定为返回给客户端的选项。结果是我的 /etc/resolv.conf 文件更新为以下行:

域名 mydomain.local

由于此“域”值是在此文件中设置的,因此我只需键入 nslookup machine2,它将 mydomain.local 附加到该查询,并且我的 dns 服务器会解析 machine2.mydomain.local 的 fqdn 的 IP。

所以理想情况下,我想模仿这个设置,这样我的树莓派 pi4 就会做同样的事情,但是它是静态设置的,那么我该怎么做呢?

请注意,我尝试将“search domain.local”添加到 /etc/resolv.conf 文件中,并且它执行了我想要的操作,但是这些设置在重新启动时会丢失,因此我无法在此处设置此值。我需要一个正确的 dhcpcd 工作解决方案。

更新:

我被要求将 /etc/resolv.conf 的输出放在这里:

$ cat /etc/resolv.conf
# Generated by resolvconf
nameserver 10.10.0.1
Run Code Online (Sandbox Code Playgroud)

dns domain resolv.conf

4
推荐指数
1
解决办法
1万
查看次数

了解 Sudoers 文件中的权限

我正在尝试理解Debian Wikisudo上的文档。对此,它使用了下面的两个示例。但是我不明白它们之间的区别。与root 的( ) 选项相比,为什么组 sudo 具有 ( ) ?命令的每个部分的作用是什么。ALL:ALLALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

#Default rule for root.
root    ALL=(ALL) ALL
Run Code Online (Sandbox Code Playgroud)

sudo

2
推荐指数
1
解决办法
7547
查看次数

VirtualBox CentOS VM - 无法让鼠标在安装时工作

我有两个虚拟机的 VirtualBox。一个是完全安装的 Debian VM,它在来宾版本中运行良好。另一个是我创建的用于安装 CentOS 的新 VM。问题是,当我启动新的 VM 时,我无法在 CentOS 的安装屏幕上使用鼠标。它在 VirtualBox 上给出了“虚拟机报告客户操作系统在当前视频模式下不支持鼠标指针集成”的错误。每个人都在 Google 上说您需要主机上的访客版本。我可以确认我已经安装了它,因为它在我的 Debian 机器上运行,并且我主机上的包管理器显示它已安装(如下所示):

$  pacman -Q virtualbox-guest-iso 
virtualbox-guest-iso 6.0.4-1
Run Code Online (Sandbox Code Playgroud)

我还尝试了所有不同的视频模式(VMSVGA、VBoxVGA、VBoxSVGA),但都没有成功。奇怪的是,我似乎能够在 VM 内单击/移动物理鼠标并选择内容,只是没有光标。那么我该如何解决这个问题呢?我需要我的鼠标在 CentOS 安装屏幕上工作,这就是我想要的。

编辑:我尝试在这个新 VM 上安装许多不同的 ISO,包括 Debian、RedHat、Fedora 和 CentOS。我似乎只有在尝试安装 CentOS 和 RedHat 时才会遇到这个问题。

virtualbox

2
推荐指数
1
解决办法
5966
查看次数

-a 和 -o 在表达式中如何工作?

我正在使用手册页进行“测试”。除了以下两行之外,我明白了所有内容。有人能给我一个如何实际使用它的例子吗,因为到目前为止我一直在使用一维测试(即在我的测试中是 x = y 之类的东西),所以比较表达式在我的脑海中没有多大意义。我想如果有人能给我展示一个例子或用例我就会明白。

   EXPRESSION1 -a EXPRESSION2
          both EXPRESSION1 and EXPRESSION2 are true

   EXPRESSION1 -o EXPRESSION2
          either EXPRESSION1 or EXPRESSION2 is true
Run Code Online (Sandbox Code Playgroud)

bash

2
推荐指数
1
解决办法
277
查看次数

使用 While 循环进行读取的正确方法是什么

我读到一本 bash 书的一部分,它试图向我展示您可以使用 read 语句与 while 循环结合来读取文件的每一行,然后将前两个单词捕获到两个变量中。不过,我编写了自己的脚本来测试它。

$ cat hoststest 
192.168.1.1 pc1 word3 word4
192.168.1.2 pc2 word3 word4
$ cat t13
#!/bin/bash
while read ip_address pc_number restofstuff
do
if [ ! -z "$ip_address" ]; then
    echo "IP is $ip_address and its for $pc_number"
fi
done < "/home/john/hoststest"
$ ./t13
IP is 192.168.1.1 and its for pc1
IP is 192.168.1.2 and its for pc2
Run Code Online (Sandbox Code Playgroud)

在我最初的测试中,我没有第三个变量“restofstuff”。发生的情况是,pc_number 变量不是仅获取 pc1 或 pc2 作为其值,而是将 pc_number 存储为该行的其余部分。因此,我添加了第三个变量,只是为了不将该行的所有其余部分作为 pc_number 的一部分。我所做的现在可以使用这个“restofstuff”变量,但感觉我做得不对。我基本上只是创建了一个不执行任何操作的“死”变量。如果我尝试继续使用 read + while 循环,那么正确的方法是什么(注意,这是我正在使用/学习的 while 循环 + …

bash

2
推荐指数
1
解决办法
873
查看次数

如何在启动时自动挂载

我有一个 RAID 阵列,每次我的计算机重新启动时我都必须手动安装它。有没有办法自动化这个?每次我的电脑启动时,我都会输入这个。

sudo mount /dev/md0 /mnt/raiddrives
Run Code Online (Sandbox Code Playgroud)

我只希望 Debian 自动执行此操作。

automounting

1
推荐指数
1
解决办法
195
查看次数

理解管道中的|&amp;

在 bash 手册https://www.gnu.org/software/bash/manual/html_node/Pipelines.html \nit 中指出:

\n
\n

|&如果使用\xe2\x80\x98 \xe2\x80\x99,command1则 \xe2\x80\x99s 标准错误除了其标准输出之外,还command2通过管道连接到 \xe2\x80\x99s 标准输入;它是 的简写2>&1 |

\n
\n

我向社区提出的问题是,它的实际意义是什么。我做了一个测试来证明为什么我认为它没有任何作用。

\n

在这里,我创建了一个有效的循环,然后在最后一行创建了一个错误:

\n
items="frog cat"\nfor item in $items\ndo \necho $item\ndone\n\nfor item i will make error this line\n
Run Code Online (Sandbox Code Playgroud)\n

因此,手册暗示的是,除非我使用 |&,否则 stderr 将不会在 stdout 中输出,因为它通过管道传输到下一个命令。所以我测试了一下:

\n
## this shows a regular pipe without &.  As you can see stderr gets written anyway\n$ ./testing.sh  | grep error\n./testing.sh: line 7: syntax error near unexpected token `i\'\n./testing.sh: line …
Run Code Online (Sandbox Code Playgroud)

bash

1
推荐指数
1
解决办法
110
查看次数

使用 nano 编辑 crontab

我一直无法让 crontab 在启动时执行我的任何脚本。我想知道为什么它不起作用。下面是我尝试使用它的示例,我已尝试提供尽可能多的故障排除信息。

$crontab -l
no crontab for server
$crontab -e
#I scroll down to the bottom of the file and add the line below in
@reboot /usr/bin/teamspeak3-server_linux-amd64/ts3server_minimal_runscript.sh
#I make a carriage return at the bottom of the file
Run Code Online (Sandbox Code Playgroud)

我按 ctrl+o 保存文件(因为它在 nano 中打开),然后按 ctrl+z 退出。我现在发出“crontab -e”来检查内容是否存在。该文件显示出来,只是没有我对它所做的更改。我什至尝试在 crontab 文件中只添加一条注释行,这也没有保存。无论如何,我检查了脚本确实正常工作。

$cd /usr/bin/teamspeak3-server_linux-amd64/
$./ts3server_minimal_runscript.sh
Run Code Online (Sandbox Code Playgroud)

然后它在读取脚本并完美加载脚本时提供大量输出。所以我 ctrl+c 退出应用程序,并检查权限。

$ls -l | grep ts3server_minimal
-rwxr-xr-x 1 server server bla bla bla ts3server_minimal_runscript.sh
Run Code Online (Sandbox Code Playgroud)

所以每个人都可以执行它。无论如何我重新启动,发现应用程序没有启动。为什么?

cron nano

0
推荐指数
1
解决办法
2172
查看次数