我开始为我的项目编写一些 bash 脚本,它们需要编写一些中间文件或变量。
我想知道当有人运行我的脚本时我可以确定可以访问哪些文件夹?使用它是一种常见的做法/tmp/吗?还是我应该使用其他东西?
我想知道,Debian Standard 和 GNOME 版本之间有什么区别吗?
Debian 不是默认在 GNOME 下吗?
情况 :
$ mkdir foo && touch foo/.test
$ cp foo/* .
zsh: no matches found: foo/*
(or bash : cp: cannot stat ‘foo/*’: No such file or directory)
Run Code Online (Sandbox Code Playgroud)
我有一个充满隐藏文件夹和文件的目录。发生了什么,解决方案是什么?
我尝试了以下但它似乎不起作用:
$ cat script.sh
#!/bin/env -i /bin/sh
/bin/env
$ script.sh
/bin/env: invalid option -- ' '
Try `/bin/env --help' for more information.
Run Code Online (Sandbox Code Playgroud) 我有两个接口eth1和eth0. 我希望将所有流量eth0转发到eth1. 我创建了一个这样的 iptable 规则:
iptables -A FORWARD -s 0/0 -i eth0 -p tcp -o eth1 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
但这不起作用。这是这样做的正确方法吗?
我的电脑上有两个接口,eth0和eth1.
两个子网都有一个 DHCP 服务器。我如何使用dhclient更新两个接口的 IP 地址?
如果我做:
dhclient -r && dhclient eth0
Run Code Online (Sandbox Code Playgroud)
它更新了 上的 IP eth0。然后,如果我只想做:
dhclient eth1
Run Code Online (Sandbox Code Playgroud)
它失败并出现错误:
dhclient(22421) is already running - exiting.
Run Code Online (Sandbox Code Playgroud)
我可以:
dhclient -r && dhclient eth1
Run Code Online (Sandbox Code Playgroud)
但是这dhclient -r部分释放了租约,我也失去了 IP 地址eth0。
目前,我设法做我想做的事情的唯一方法是运行dhclientfor eth0,残酷地杀死它,然后运行它eth1:我最终在两个接口上都获得了更新的 IP。
我还测试了dhclient -x而不是dhclient -r,没有运气。
当然,这不是要走的路!
编辑:
两个答案建议这样做dhclient -r eth0 eth1 && dhclient eth0 eth1
,实际上,限制了对这些接口的广播调用。但是第一个应答的 DHCP 服务器将是唯一使用的,因此会在单个接口上生成一个新 IP,而不是两个。看到这里,我们可以看到DHCPDISCOVER两个接口上的调用,但DHCPREQUEST只在 …
我知道如何同时执行多个命令,但现在我需要的是多次运行相同的命令,并在命令执行之间有一些时间延迟。
I'm trying to use the date command to generate a file timestamp that the date command itself can interpret. However, the date command does not seem to like its own output, and I am not sure how to work around this. Case in point:
sh-4.2$ date
Fri Jan 3 14:22:19 PST 2014
sh-4.2$ date +%Y%m%dT%H%M
20140103T1422
sh-4.2$ date -d "20140103T1422"
Thu Jan 2 23:22:00 PST 2014
Run Code Online (Sandbox Code Playgroud)
date appears to be interpreting the string with an offset of 15 hours. Are …
在阅读了 Linux 命名空间之后,我的印象是,在许多其他功能中,它们是 chroot 的替代品。例如,在这篇文章中:
[名称空间] 的其他用途包括 [...] chroot() 式将进程隔离到单个目录层次结构的一部分。
但是,当我克隆 mount 命名空间时,例如使用以下命令,我仍然看到整个原始根树。
unshare --mount -- /bin/bash
Run Code Online (Sandbox Code Playgroud)
我知道我现在能够在不与原始命名空间共享的新命名空间中执行额外的挂载,因此这提供了隔离,但它仍然是同一个根,例如/etc两个命名空间仍然相同。我还需要chroot更改根目录还是有其他选择?
我期待这个问题会提供答案,但答案chroot再次仅使用, 。
有一条现已删除的评论提到pivot_root。由于这实际上是 的一部分linux/fs/namespace.c,因此它实际上是名称空间实现的一部分。这表明仅使用unshare和更改根目录mount是不可能的,但命名空间提供了一个自己的——更聪明的—— chroot. chroot即使在阅读源代码之后(例如在安全性或更好的隔离的意义上),我仍然不明白这种方法的主要思想,这使得它与 根本不同。
这不是这个问题的重复。执行完答案中的所有命令后,我有单独的 /tmp/tmp.vyM9IwnKuY(或类似的),但根目录仍然相同!