Linux 中有一些特殊的文件,它们并不是真正的文件。
其中最显着和清晰的例子是在dev文件夹中,“文件”,如:
/dev/null - 忽略您写入文件的任何内容/dev/random - 输出随机数据而不是文件内容/dev/tcp - 通过网络发送您写入此文件的任何数据首先,这些类型的“文件”的名称是什么,它们实际上是某种伪装的脚本或二进制文件?
其次,它们是如何创建的?这些文件是在内核级别内置到系统中的,还是有办法自己创建一个“神奇文件”(a 怎么样/dev/rickroll)?
这是我经常遇到的情况:
我想将 320GB 的数据从源服务器传输到目标服务器(特别是来自 的数据/dev/sda)。
我在网上搜索了这个问题,并测试了几个命令。出现频率最高的就是这个:
ssh user@192.168.1.100 'dd bs=16M if=/dev/sda | gzip' > backup_sda.gz
Run Code Online (Sandbox Code Playgroud)
这个命令被证明太慢了(它运行了一个小时,只得到了大约 80GB 的数据)。1GB 的测试数据包大约需要 1 分 22 秒,最终在未压缩时速度是原来的两倍。结果也可能因传输的文件小于源系统上的 RAM 量而产生偏差。
此外(这是在 1GB 测试片上测试的),如果我使用gzip命令和dd; 与直接通过管道传输相比,在目标上提取的结果文件具有不同的校验和。我仍在试图弄清楚为什么会发生这种情况。
在教程中,系统会提示我“如果您正在运行 Squeeze,请按照这些说明...”和“如果您正在运行 Wheezy,请按照这些其他说明...”
当我运行时uname,我得到以下信息:
Linux dragon-debian 3.2.0-4-686-pae #1 SMP Debian 3.2.63-2+deb7u2 i686 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
这些信息是否足以知道我使用的是Squeeze还是Wheezy,还是从其他地方获得的?
这两个命令env和 有printenv什么区别?它们都显示了环境变量,除了_.
有两个命令而不是一个命令有什么历史原因吗?
据我了解,Linux 中交换分区的目的是从 RAM 中释放一些“不经常访问”的信息,并将其移动到硬盘驱动器上的特定分区(代价是读取或写入速度变慢)到),本质上允许主动应用程序更多的“高速内存”。
这非常适合当您使用的是 RAM 量较小的机器并且不想在用完时遇到问题时。但是,如果您的系统有16 GB或32 GB的 RAM,并且假设您没有为 StackExchange 运行 MySQL 数据库或在 Linux 中编辑 1080p 全长电影,是否应该使用交换分区?
我有一台名为 的服务器,它gamma在工作中不断启动并运行。有时我从家里连接到它,在这种情况下我使用公共 IP 地址55.22.33.99。有时,我在工作时连接到它,而不是不必要地反弹我的数据包,我通过本地 IP 地址连接192.168.1.100。
目前,我将它们分成两个不同的条目 ~/.ssh/conf
Host gamma-local
        HostName 192.168.1.100
        Port 22
        User andreas
Host gamma-remote
        HostName 55.22.33.99
        Port 12345
        User andreas
Run Code Online (Sandbox Code Playgroud)
所以,如果我在工作,我只需要打字就可以ssh gamma-local了;如果我在家(或世界上任何其他地方),我会跑ssh gamma-remote.
连接到服务器时,我宁愿不必根据我所在的位置键入不同的名称,而是希望该部分自动完成;例如,在某些情况下,我有自动脚本来连接不知道我在哪里的人。
有一个问题是通过使用Bash脚本首先“尝试”连接到本地的,如果连接不上,则尝试连接到远程IP地址来解决此问题。这很好,但 (1) 似乎效率低下(尤其是因为有时您必须“等待”连接超时,因为它们并不总是立即返回错误)并且 (2) 需要 Bash 并拖拽脚本。
是否有一种替代方法可以实现这一点,既不依赖于 Bash 脚本的使用,也不依赖于“测试”以查看连接是否首先起作用?
我受到以下限制:
.zip计算机上有一个 1.0 GB 的文件,其中包含一个文件,一个raspbian. 解压缩后,此文件为 3.2 GB,名为2015-11-21-raspbian-jessie.img.dd.在这些限制下,我可以将图像写入 SD 卡吗?
我知道可以通过管道传输数据tar,然后通过管道将数据传输到其他地方,但是,这是否仍然适用于zip文件格式,或者在访问任何文件之前是否需要解压缩整个存档?
当我尝试运行以下命令时:
echo -e "GET / HTTP/1.1\n\n" | /dev/tcp/74.125.225.19/80
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息:
bash: /dev/tcp/74.125.225.19/80: No such file or directory
Run Code Online (Sandbox Code Playgroud)
以下命令完美运行,因此问题涉及我的使用方式/dev/tcp:
echo -e "GET / HTTP/1.1\n\n" | nc 74.125.225.19 80
Run Code Online (Sandbox Code Playgroud)
我在 Ubuntu 13.04 中,所以该功能应该在我的系统上。我究竟做错了什么?/dev/tcp正确使用的规则是什么?
在 gpg 中,是否可以在 PGP 密钥的 UID 列表中向上或向下移动 UID?
我意识到这纯粹是一种装饰性的东西,但我可能想用它来显示我的地址之间的优先级,如果可能的话应该先使用哪个。
pub   4096R/0xAABBD62D0BA66C66 2014-09-02
uid                 [ultimate] Mr. Foo Bar <fourth@example.com>
uid                 [ultimate] Mr. Foo Bar <first@example.com>
uid                 [ultimate] Mr. Foo Bar <third@example.com>
uid                 [ultimate] Mr. Foo Bar <second@example.com>
Run Code Online (Sandbox Code Playgroud)