我正在使用parted对非 SSD 硬盘进行分区,因为我想要一个 GPT 分区表。
parted /dev/sda mklabel gpt
Run Code Online (Sandbox Code Playgroud)
现在,我正在尝试创建正确对齐的分区,因此我使用以下命令来了解第一个扇区的开始位置:
parted /dev/sda unit s p free
Disk /dev/sda: 488397168s
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
34s 488397134s 488397101s Free Space
Run Code Online (Sandbox Code Playgroud)
我们可以看到它从扇区 34 开始(这是使用此分区表时的默认值)。
因此,要创建我尝试的第一个分区:
parted /dev/sda mkpart primary 63s 127s
Run Code Online (Sandbox Code Playgroud)
将它对齐到第 64 扇区,因为它是 8 的倍数,但它显示:
警告:生成的分区没有正确对齐以获得最佳性能。
我硬盘中的逻辑和物理扇区大小均为 512 字节:
cat /sys/block/sda/queue/physical_block_size
512
cat /sys/block/sda/queue/logical_block_size
512
Run Code Online (Sandbox Code Playgroud)
如何创建正确对齐的分区?我究竟做错了什么?
我正在尝试登录到我的 DSL 路由器,因为我在使用命令行邮件时遇到了问题。我希望能够重新配置路由器。
当我发出ssh
命令时,会发生以下情况:
$ ssh enduser@10.255.252.1
Unable to negotiate with 10.255.252.1 port 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1
Run Code Online (Sandbox Code Playgroud)
所以然后我查看了这个 stackexchange post,并将我的命令修改为这个,但是我遇到了一个不同的问题,这次是密码。
$ ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 enduser@10.255.252.1
Unable to negotiate with 10.255.252.1 port 22: no matching cipher found. Their offer: 3des-cbc
Run Code Online (Sandbox Code Playgroud)
那么是否有提供 3des-cbc
加密的命令?我不确定 3des,比如我是否想将它永久添加到我的系统中。
是否有允许3des-cbc
密码的命令?
这里有什么问题?这不是要求密码。
这个问题的目的是回答好奇心,而不是解决特定的计算问题。问题是:为什么 POSIX 强制实用程序通常不内置到 shell 实现中?
例如,我有一个脚本,它基本上读取一些小文本文件并检查它们的格式是否正确,但由于大量的字符串操作,在我的机器上运行需要 27 秒。这种字符串操作通过调用各种实用程序来创建数千个新进程,因此速度很慢。我非常有信心,如果内置了一些实用程序,即grep
, sed
, cut
,tr
和expr
,那么脚本将在一秒或更短的时间内运行(根据我在 C 中的经验)。
似乎在很多情况下,构建这些实用程序会影响 shell 脚本中的解决方案是否具有可接受的性能。
显然,选择不内置这些实用程序是有原因的。也许在系统级别拥有一个实用程序版本可以避免该实用程序的多个不同版本被各种 shell 使用。我真的想不出还有很多其他原因来保持创建这么多新进程的开销,而且 POSIX 对实用程序的定义足够多,以至于有不同的实现似乎不是什么大问题,只要它们都是 POSIX合规。至少没有像拥有这么多流程的低效率那样大的问题。
我正在使用 Linux Mint。我的登录 shell ( cat /etc/passwd | grep myUserName
) 是 bash。
在我启动我的图形桌面环境并从中运行终端模拟器后,我可以看到它.bash_profile
没有来源(其中export
ed 的环境变量未设置)。但是,如果我从一个文本控制台登录(ctrl+ alt+ F1)或手动运行bash -l
从终端仿真器,.bash_profile
工作正常。
当我认为.bash_profile
应该在 X 启动时获取并且所有export
'ed vars 应该在终端中可用,从 X 运行时,我错了吗?
PS 将所有内容放入.bashrc
并从中采购.bash_profile
并不是一个好主意(/sf/ask/63206251/):环境的东西应该只采购一次。
我相信 FAT32 文件系统不支持文件权限,但是当我ls -l
在 FAT32 分区上执行时,ls -l
显示文件具有权限:
-rw-r--r-- 1 john john 11 Mar 20 15:43 file1.txt
-rw-r--r-- 1 john john 5 Mar 20 15:49 file2.txt
Run Code Online (Sandbox Code Playgroud)
为什么ls -l
显示文件的权限?
当我使用该type
命令来确定cat
是 shell 内置程序还是外部程序时,我得到以下输出:
-$ type cat
cat is hashed (/bin/cat)
-$
Run Code Online (Sandbox Code Playgroud)
这是否意味着这cat
是一个外部程序/bin/cat
?
我很困惑,因为当我检查下面的输出时,echo
我看到它既是built-in
一个程序,又是一个程序/bin/echo
-$ type echo
echo is a shell builtin
-$ which echo
/bin/echo
-$
Run Code Online (Sandbox Code Playgroud)
所以我不能使用/bin/cat
必然意味着外部程序的逻辑,因为 echo/bin/echo
仍然是内置的。
那我怎么知道是什么cat
?内置还是外置?
我发现在我的根目录下,有一些目录具有相同的 inode 编号:
$ ls -aid */ .*/
2 home/ 2 tmp/ 2 usr/ 2 var/ 2 ./ 2 ../ 1 sys/ 1 proc/
Run Code Online (Sandbox Code Playgroud)
我只知道目录的名称保存在父目录中,而它们的数据保存在目录本身的 inode 中。
我在这里很困惑。
这就是我在跟踪路径名 /home/user1 时的想法。
我在一个操作系统类。接下来,我们必须做一些修改内核代码的工作。我们被建议不要使用个人机器进行测试(我想这意味着安装它),因为我们可能会写出错误的代码并在我们不应该写的地方重写。为了安全起见,我们可以使用实验室中的机器。
如果我要使用 VM 进行测试,是否可以保护主机系统免受潜在不安全代码的影响?我真的不想被困在学校的系统中,快照会很有用。
如果它仍然是高风险,关于我需要考虑什么来安全测试的任何建议?
我们将使用 linuxmint 之类的东西开始。如果有人想查看当前项目中的内容:http : //www.cs.fsu.edu/~cop4610t/assignments/project2/writeup/specification.pdf
我安装的一个软件在我的个人资料中插入了一行,内容如下:
[ -s "$SOME_FILE" ] && \. "$SOME_FILE"
Run Code Online (Sandbox Code Playgroud)
我知道 dot.
与 同义source
,所以我怀疑这只是采购文件,但我以前从未见过\.
;它会做其他事情吗?
编辑,关于 DV:搜索“反斜杠点”会导致有关./
何时调用可执行文件的问题,并man source
导致\.
未出现的联机帮助页。我不知道还能尝试什么,因此这个问题。
编辑2:查看相关问题
如果我运行以下 .sh 文件:
#!/bin/sh -a
echo "a" | sed -e 's/[\d001-\d008]//g'
Run Code Online (Sandbox Code Playgroud)
结果报错:
sed: -e 表达式 #1, char 18: 无效范围结束
但是如果我运行以下 .sh 文件:
#!/bin/sh
set -a
echo "a" | sed -e 's/[\d001-\d008]//g'
Run Code Online (Sandbox Code Playgroud)
它运行没有错误。第二个代码不应该等同于第一个代码吗?为什么第一个错误?