Unix & Linux

Linux,FreeBSD和其他类似Un * x的操作系统用户的问答

2
写入缓存如何与跨越不同速度的磁盘的文件系统一起工作?
在具有多个磁盘和跨越慢速(HDD)和快速(SSD)驱动器的软件RAID的现代Linux系统上,如何缓存对文件系统的写入? 对于md-raid RAID1,可以为磁盘配置磁盘,--write-mostly并且--write-behind表明从较快的磁盘执行读取,而对较慢的磁盘进行写入可能会滞后。但是如何在内核级别缓存呢?内核是否在md-raid层之前或之后缓存磁盘写入的内容?在write()调用结束时,是否保证将数据写入其中一个非--write-behind磁盘? 对于btrfsRAID1,相同的情况如何发生?没有--write-behind功能,因此脏页是在设备级别还是在文件系统级别进行计数的?什么时候会返回write()? vm.dirty_*ratio可调参数如何影响这些设置?

2
动态构建命令
我正在编写脚本,因此需要tar动态生成命令。 这是两个示例,以说明我要执行的操作: #!/bin/bash TAR_ME="/tmp" EXCLUDE=("/tmp/hello hello" "/tmp/systemd*" "/tmp/Temp*") _tar="tar "`printf -- '--exclude="%s" ' "${EXCLUDE[@]}"`" -zcf tmp.tar.gz" echo COMMAND: "${_tar}" ${_tar} "$TAR_ME" echo -e "\n\nNEXT:\n\n" EXCLUDE=("--exclude=/tmp/hello\ hello" "--exclude=/tmp/systemd*" "--exclude=/tmp/Temp*") _tar="tar "`printf -- '%s ' "${EXCLUDE[@]}"`" -zcf test.tar.gz" echo COMMAND: "${_tar}" ${_tar} "$TAR_ME" 我希望能够_tar用作命令,已经能够使其与经典路径一起使用,但是我需要它与文件夹名称中的空格一起使用。而且每一次我都会看到类似以下的错误: COMMAND: tar --exclude="/tmp/hello hello" --exclude="/tmp/systemd*" --exclude="/tmp/Temp*" -zcf tmp.tar.gz …

6
Bash根据元素的长度对数组进行排序?
给定一个字符串数组,我想根据每个元素的长度对该数组进行排序。 例如... array=( "tiny string" "the longest string in the list" "middle string" "medium string" "also a medium string" "short string" ) 应该排序为... "the longest string in the list" "also a medium string" "medium string" "middle string" "short string" "tiny string" (此外,如果列表按字母顺序对相同长度的字符串进行排序,那将是很好的选择。在上面的示例medium string中,middle string即使它们的长度相同,也对它们进行了排序。但这不是一个“硬”的要求,如果这样会使字符串复杂化,解)。 可以就地对数组进行排序(即修改“数组”)或创建新的排序数组都可以。



1
“ ALL ALL =(ALL)NOPASSWD:ALL”已自动添加到我的/ etc / sudoers文件中。这是安全漏洞吗?
ALL ALL=(ALL) NOPASSWD:ALL行在文件末尾自动添加了两次/etc/sudoers。 每当我运行sudo命令时,我的Linux突然停止要求输入密码。这使我调查了这个问题。 即使在运行sudo -k后重置宽限时间,它也不会要求我输入密码。 我弄清楚了该行的含义,并注释了两行以解决该问题,然后一切恢复正常。 但是根据我的搜索,sudoers文件只能手动编辑,而我无法向所有用户授予对所有命令的NOPASSWD权限。 这是否意味着我执行的脚本更改了sudoers文件?这是引起关注的原因吗? 操作系统:Linux Mint 18.3 Cinnamon
9 security  sudo 

4
如何使btrfs假装为ext4?
Dropbox刚刚宣布他们的Linux客户端将来仅支持ext4。我目前在btrfs分区上使用Dropbox(没有任何问题)。显然,xattr支持是必不可少的。ext4和btrfs都支持此功能,实际上我不知道btrfs也不支持的ext4功能。 我不知道Dropbox打算如何检测文件系统,但是有什么办法可以让btrfs假装为ext4?

3
如何查找ls -l中的字段的含义
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Unix&Linux Stack Exchange 的主题。 2年前关闭。 我的问题不是每个字段的含义,而是要确定每个字段的含义。 手册页仅声明-l使用长列表格式,而没有描述长列表格式的含义。
9 ls 


2
为什么“ [az] *”与非字母字符串匹配?
我有alphanum两行内容: 123 abc this is a line 我对为什么在运行时sed 's/[a-z]*/SUB/' alphanum得到以下输出感到困惑: SUB123 abc SUB is a line 我期待: 123 SUB SUB is a line 我找到了一个修复程序(sed 's/[a-z][a-z]*/SUB/'改用),但是我不明白为什么它起作用,而我的却不起作用。 你能帮我吗?

2
删除名称中没有字符串的文件
我要删除名称中不包含字符串“ 999”(不带“'')的文件。 我努力了: grep -vlr 999 . | xargs -0 rm -f -- find . -print0 | grep --null-data -v 999 | xargs -0 rm -- 但是它们都不起作用。我正在使用bash 3.2.57的macOS Sierra。
9 bash  osx  filenames  rm 



2
为什么某些umask值不生效?
我试图更好地理解权限,所以我正在做一些“练习”。这是我正在使用的命令序列及其各自的输出: $ umask 0022 $ touch file1 $ ls -l file1 -rw-r--r-- 1 user group 0 Mar 16 12:55 file1 $ mkdir dir1 $ ls -ld dir1 drwxr-xr-x 2 user group 4096 Mar 16 12:55 dir1 这是有道理的,因为我们知道默认文件权限为666(rw-rw-rw-),目录默认权限为777(rwxrwxrwx)。如果我从这些默认权限,我减去umask值 666-022=644,rw-r--r--为的file1,所以它的连贯与以前的输出; 777-022=755,rwx-r-x-r-x对于dir1,也很连贯。 但是,如果我将umask从更改022为021,则不再可用。 这是文件的示例: $ umask 0021 $ touch file2 $ ls -l …

3
为什么或为什么使用`。*?`比`。*`更好?
我在SuperUser上回答了这个问题,该问题与在提取输出时使用的某种正则表达式有关。 我给出的答案是这样的: tail -f log | grep "some_string.*some_string" 然后,在对我的答案的三条评论中,@ Bob写道: .*贪婪,可能会捕获比您想要的更多的东西。.*?通常更好。 然后这个 在?上一个修改*,使其成为懒惰,而不是贪婪的默认。假设PCRE。 我用google搜索PCRE,但无法在我的答案中得到什么意义? 最后, 我还应该指出,这是regex(默认情况下,grep执行POSIX regex),而不是shell glob。 我只知道什么是正则表达式以及它在grep命令中的基本用法。因此,我无法获得这3条评论中的任何一条,并且我想到了以下这些问题: .*?vs. 用法有什么区别.*? 哪个更好,在什么情况下?请提供示例。 另外,如果有人可以理解这些意见,将会很有帮助。 更新:作为对问题的回答,正则表达式与Shell Globs有何不同? @Kusalananda在他的评论中提供了此链接。 注意:如果需要,请在回答引用上下文之前阅读我对这个问题的回答。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.