Unix & Linux

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

3
如何使媒体密钥与i3兼容?
我已经从Gnome迁移到Manjaro上的i3,并且几乎完成了配置窗口管理器,终端颜色以及其他方面的工作。一段时间后,我决定听一些音乐,几分钟后,我意识到音量键和播放键不起作用。 我有Razer Blackwidow Stealth 2014键盘,因此这些媒体键实际上与功能键一起使用。例如:播放/暂停处于打开状态F6,当我按键时,它用作媒体Fn键,如中的Fn + F6。


2
如果间隔小于等于10秒读取文件,Windows客户端将不会在本地刷新Linux samba文件
如果我有Windows客户端以小于等于10秒的间隔读取Linux smb共享上的文件,则Windows客户端将显示该文件的错误信息(已缓存?)。 我已经在多个系统上重现了这一点。 复制示例步骤: 1)设置linux samba共享-在此示例中,使用Debian并安装samba。例: sudo mkdir /test sudo chmod 777 /test smb.conf添加: [test] read only = no locking = no path = /test/ guest ok = yes 2)将此目录映射为Windows客户端中的驱动器(此测试将使用L :) 3)在samba服务器上创建带有一些文本的文件 nano /test/test.txt ORIGINAL 4)在Windows机器上创建简单的批处理文件,以每5秒查看一次文件: copy con test.bat @echo off cls :1 type L:\test.txt timeout 5 goto 1 5)运行批处理文件,它应该每5秒显示一次ORIGINAL。 …

1
如何使内核压缩碎片内存
我在跑步Fedora 26。 这是我的算法教授给我的一个非常奇怪的任务。作业说: C中的内存碎片: 设计,实现和执行一个C程序,该程序执行以下操作:它为3m每个大小为800,000个元素的数组序列分配内存;然后它显式地取消分配所有偶数数组,并分配m每个大小为900,000个元素的数组序列。测量程序分配第一个序列和第二个序列所需的时间。选择m耗尽几乎所有程序可用的主内存。” 这样做的总体目标是对内存进行分段,然后请求的内存量要大于连续块的可用内存量,从而迫使操作系统压缩或整理内存碎片。 在课堂上,我问我们应该怎么做,因为内存是可视的,而不是实际上是连续的,他回答:“好吧,您必须关闭[虚拟内存]。” 其他一些学生在课堂上问我们如何知道何时达到“垃圾收集”状态,他说:“第二次分配的时间应该比第一次分配的时间长,因为垃圾收集需要花费时间” 经过一番搜索后,我发现禁用虚拟内存的最接近方法是使用禁用交换内存swapoff -a。我禁用了桌面环境,并从本机终端编译并运行了程序(以避免受到其他进程的干扰,尤其是诸如桌面环境之类的繁重进程)。我这样做并以递增的方式运行程序,m直到达到第二个分配的时间大于第一个分配的时间。 我以递增的方式运行该程序,m并最终找到了第二个分配的时间比第一个分配的时间长的点。但是,在此过程中,我遇到了一个问题,即在第二次分配之前该进程已被终止。我检查了一下dmesg,发现它被oom-killer 杀死。我发现并阅读了有关oom-killer的几篇文章,发现可以禁用内核对内存的过度分配。 我这样做并再次运行程序,只是这次我找不到m第二个的时间比第一个大的时间。最终,随着m越来越大(尽管比启用了过度分配时要小得多),malloc将失败并且我的程序将终止。 我有三个问题,第一个并不是那么重要: 垃圾回收是否是正确的术语?我的教授非常坚定地说这是垃圾收集,但是我假设垃圾收集是通过编程语言完成的,因此将其视为更碎片整理。 在Linux系统上是否可以像他想的那样进行压缩? 为什么在禁用交换但仍启用了内存过度分配的情况下,第二次分配的时间比第一次分配的时间长?压实实际上发生了吗?如果是这样,为什么在禁用内存过度分配后无法达到压缩的程度?

2
将文件添加到tbz文件
我正在寻找一种更新数千个.tbz存档文件的方法,因此我将使用Shell脚本进行此操作。我需要向每个文件添加一个文件。 我的问题是,有没有一种更快的方法,而无需提取每个tbz的内容,然后使用包含的tar中包含的新文件进行重新压缩?这些命令是什么样的? 谢谢

2
测试变量是否包含换行符(POSIX)
我知道有些外壳接受这种测试: t() { [[ $var == *$'\n'* ]] && res=yes || res=no printf '%s ' "$res"; } var='ab cd' t var='abcd' t echo 执行时: $ bash ./script yes no 什么是POSIX(破折号)工作等效项 以下是可靠的测试方法吗? nl=' ' t() { case "$var" in *$nl* ) res=yes ;; * ) res=no ;; esac printf '%s ' …


1
Bash:重定向到文件,始终创建新的
在bash中,一个命令链接 echo test > actual.txt 将actual.txt用“ test” 替换被调用文件的内容,并创建一个不存在的文件。但是,如果文件确实存在,bash只会打开它,截断它,然后将新内容写入文件。 具体来说,在这种情况下redirect命令失败: ln -s /some/illegal/path link.txt echo test > link.txt Bash 4.4.12给了我令人困惑的错误消息link.txt: No such file or directory。 避免这种情况的一种方法是确保在运行重定向命令之前删除文件。 rm link.txt && echo test > link.txt 不过,我想知道是否有一些bash选项或重定向操作符的调整可以防止这种故障模式。有任何想法吗?


1
Virtual Machine Manager希望一次又一次禁止Wayland上的快捷方式
我最近用Fedora 27重新安装了我的工作站,从那以后,virt-manager一直在做一件奇怪的事情。 每次打开VM控制台,然后将鼠标移到窗口中时,都会出现一个对话框,询问我: 虚拟机管理器希望禁止快捷方式 您可以通过按Super + Escape来恢复快捷方式。 我单击“拒绝”还是“允许”似乎并不重要。无论哪种情况,按下Ctrl+之W类的键都由virt-manager处理,而不是发送给VM。例如,在那种情况下,窗口将关闭,而不是删除我正在编辑的行上的单词。 在重新安装同样在Fedora 27上的计算机之前,我从未见过此对话框。 我可以记得的关于virt-manager的唯一更改是添加了PolicyKit规则,以允许我的用户无需密码即可管理系统虚拟机: # cat /etc/polkit-1/rules.d/51-org.libvirt.unix.manage.rules polkit.addRule(function(action, subject) { if (action.id == "org.libvirt.unix.manage" && subject.user == "error") { return polkit.Result.YES; polkit.log("action=" + action); polkit.log("subject=" + subject); } }); 这些是我现在拥有的软件包版本: # rpm -q libvirt-daemon virt-manager libvirt-daemon-3.7.0-3.fc27.x86_64 virt-manager-1.4.3-2.fc27.noarch 另一个区别是现在我在Wayland上,而在使用X之前。当我使用“ Xorg上的Gnome”登录时,问题就消失了。 如何防止这种无用的对话框出现在Wayland下,并将诸如Ctrl+之类的命令键W发送到VM,而不是由virt-manager处理?

3
在给定的行号上执行sed操作
我想知道是否有一种简单的方法可以在具有预分配行号的某些行上进行操作。 假设我要输出文件的第1、7、14和16行,我可以简单地执行 sed -n '1p;7p;14p;16p' input_file 但这在操作不仅是打印时变得更加复杂,而且我不想编写相同的长命令4次(是的,我知道我可以通过替换相同的bash变量4次来构造此long sed命令,但是这还不够理想...),即 sed -n '1{long_command};7{long_command};14{long_command};16{long_command}' input_file 有没有办法对文件的这些特定行进行操作?我期待这样的事情, sed -n '1,7,14,16p' 这肯定无法在当前形式下运行。 任何帮助将不胜感激。“不,这不可能。” 解释也是我会接受的答案。
8 sed 

2
为什么Linux文件系统层次结构中没有自述文件?
Linux文件系统层次结构(FHS)包含许多重要目录。例如,我只是/sys/class/input在玩PS / 2键盘设置时发现的。 但是所有这些重要目录都在其他地方进行了记录,因此man /sys/class/input无法解释在特定时间会发生什么。 为什么不将README文件放入层次结构中,以使人们更容易了解特定级别的活动并处理内容?如果设备甚至可以安装自己的READMEs,那真是太棒了。

1
为什么`md5sum`不提供与Internet相同的哈希值?
我想找到字符串“ a”的md5哈希,但是运行时echo "a" | md5sum给了我另一个比我在互联网上搜索到的哈希(例如,使用DuckDuckGo或我发现的第一个搜索结果)。 跑步echo "a" | md5sum给我“ 60b725f10c9c85c70d97880dfe8191b3”,但应为“ 0cc175b9c0f1b6a831c399e269772661”。 如果我对“ 60b725f10c9c85c70d97880dfe8191b3”进行反向哈希查找,则得到“ a”。
8 echo  hashsum 

2
如何通过具有公共头合并两个文件的行?
我想基于两个文件中的公共数据合并它们作为标题。 以下是示例 文件1 >Feature scaffold1 1 100 g 101 200 g 201 300 g >Feature scaffold2 1 100 g 01 500 g >Feature scaffold3 10 500 g >Feature scaffold4 10 300 g 文件2 >Feature scaffold1 500 500 r 900 1000 r >Feature scaffold2 200 300 r >Feature scaffold3 100 200 …

4
如何在bash中移动数组值
我们要构建6个挂载点文件夹作为示例 /data/sdb /data/sdc /data/sdd /data/sde /data/sdf /data/sdg 所以我们使用数组编写了这个简单的bash脚本 folder_mount_point_list="sdb sdc sdd sde sdf sdg" folderArray=( $folder_mount_point_list ) counter=0 for i in disk1 disk2 disk3 disk4 disk4 disk5 disk6 do folder_name=${folderArray[counter]} mkdir /data/$folder_name let counter=$counter+1 done 现在我们要更改不带计数器的代码,并让= $ counter = counter + 1 是否有可能转移每个循环数组以获得下一个数组值? 像 ${folderArray[++]}

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.