Unix & Linux

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

5
从文本文件中删除反斜杠
我有 输入: NISHA =\455 输出: NISHA = 455 我想\从输出中删除。我试图使用命令,sed "s/[\]//g" P但是它不起作用,并且它会标记错误: character found after backslash is not meaningful

3
dd如何用于右移数据块?
考虑一个100MB的原始块设备作为简单示例。即204800个块,每个块512个字节,总计102760448个字节。 面临的挑战是转移前98MB(200704块),使其前面有2MB(4096个块)的间隙。要就地执行此操作,需要将任何内容都写入未读取的扇区。实现此目的的一种方法是引入缓冲区: $ dd if=/dev/sdj2 count=200704 | mbuffer -s 512 -b 4096 -P 100 | dd of=/dev/sdj2 seek=4096 期望mbuffer在将任何内容传递给写入器之前将存储4096个块,从而确保未写入任何内容到尚未读取的区域,并且写入器落后于读取器缓冲区大小。缓冲区应允许读取器和写入器在这些内存中尽可能快地操作。 但是,它似乎无法可靠地工作。我曾尝试使用真实的设备,但是它永远无法在它们上运行,而使用文件进行的实验只能在我的64位设备上运行,而不能在我的32位设备上运行。 首先,做一些准备: $ dd if=/dev/sdj2 count=200704 | md5sum 0f0727f6644dac7a6ec60ea98ffc6da9 $ dd if=/dev/sdj2 count=200704 of=testfile 这不起作用: $ dd if=/dev/sdj2 count=200704 | mbuffer -s 512 -b 4096 -P 100 -H | dd of=/dev/sdj2 …
10 dd  block-device 

1
使用sdwdate时,如何在systemd日志中禁用systemd的“时间已更改”消息垃圾邮件?
由于Debian Stretch(默认情况下使用systemd)和sdwdate(使用Slow Clock Adjuster(gh))的组合使用,经常更改我的系统时钟。 结果journalctl -f无休止地被垃圾邮件所淹没。 [...] Nov 07 13:46:49 host systemd[766]: Time has been changed Nov 07 13:46:50 host systemd[766]: Time has been changed Nov 07 13:46:51 host systemd[766]: Time has been changed [...] 这不是使用sysvinit的Debian狂热问题。 如何将systemd配置为不将Time has been changed邮件发送到日志? 一个相关问题如何在Debian jessie的/ var / log / syslog中禁用systemd的“时间已更改”垃圾邮件?已经解决,但是该解决方案在这里不起作用。
10 systemd 


2
什么是Linux容器和Linux虚拟机管理程序?
我查看了stackexchange网站,但找不到任何东西。我查看了Linux容器https://en.wikipedia.org/wiki/LXC以及hypervisor https://en.wikipedia.org/wiki/Hypervisor上的Wikipedia条目,但是对这两者的解释超出了一个人的范围既没有工作也不会理解。我还看到了http://www.linux.com/news/enterprise/cloud-computing/785769-containers-vs-hypervisors-the-battle-has-just-begun,但这也没有解释。 我玩过虚拟机,例如virtualbox。据我有限的理解,最初的想法可能是针对虚拟机的,也许是在沙盒环境中测试软件(当您无法购买/负担得起该机器时,拥有一个Solaris盒子,并且仍然对正在开发的软件有一些想法。适用于该目标硬件)。这可能也是它在云计算中取得飞跃的方式之一。问题很广泛,所以这就是我的提法- 有人可以解释一下管理程序和* nix容器是什么(如果可能的话,可以类推)? * nix管理程序与虚拟机相同还是有区别?

3
如何删除多行文本文件中大括号之间的所有文本?
例: This is { the multiline text file } that wants { to be changed } anyway. 应成为: This is that wants anyway. 我在论坛中找到了一些类似的 主题,但是它们似乎不适用于多行大括号。 如果可能的话,我更喜欢一些单行方法,例如基于grep,sed,awk等的解决方案。 编辑:解决方案似乎还可以,但是我注意到我的原始文件包括大括号嵌套。因此,我要提出一个新问题。谢谢大家:如何删除多行文本文件中嵌套大括号之间的所有文本?


1
Jenkins不使用系统的语言环境
在詹金斯,我有一个有趣的举动。 Jenkins的shell不使用我的系统语言环境。 Jenkins jenkins在我的系统上以用户身份运行。 jenkins通过SSH 登录: locale 显示: LANG = zh_CN.UTF-8 LANGUAGE = zh_CN:zh- CN LC_CTYPE =“ zh_CN.UTF-8” 等。 env显示LANG和LANGUAGE变量: LANG = zh_CN.UTF-8 LANGUAGE = zh_CN:zh id 显示用户的ID: uid = 1008(jenkins)gid = ... 将以上命令输入到jenkins作业外壳: locale 显示: LANG = LANGUAGE = LC_CTYPE =“ POSIX” 等... env并没有表现出LANG与LANGUAGE变数 id 显示用户的ID(如预期): uid = 1008(jenkins)gid …

1
禁用工作区开关叠加效果
我使用Gnome 3.12运行Debian测试。安装“ Workspace Grid”扩展后,工作区切换动画变得越来越烦人。我说的是在使用Ctrl + Alt + Arrow快捷键时出现在屏幕中间的那个东西。它变得臭到不能提供零信息的程度,此外,覆盖层需要一些时间才能消失,而且我真的看不到它下面的内容。 在晚上或晚上,动画只会伤害我的眼睛(在深色覆盖层和浅色浏览器/ IDE之间快速闪烁)。如何禁用它?如果没有可用的选项(并且可以通过扩展禁用覆盖),我愿意为Gnome Shell开发一个扩展。注意:我仍然需要所有其他动画,包括工作区切换的滑动效果。

3
为什么/ etc / network / interfaces中的发布命令在启动时多次运行?
这是内容/etc/network/interfaces: auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp post-up /etc/network/if-up.d/sshstart 并且sshstart是一个脚本,其中包含以下内容: curl something something darkside send a file over ftps in the background & /usr/bin/autossh -M 0 -f -N -o ServerAliveInterval=15 -o ServerAliveCountMax=3 -R 127.0.0.1:2005:127.0.0.1:22 -R 192.168.1.10:2006:192.168.2.110:1912 -L 127.0.0.1:5249:192.168.1.212:5249 username@17.16.15.2 -p 8080 当机器重启时,该curl命令执行了多次,该文件在ftp服务器上结束了2到3次,当我查看进程时,似乎有多个autossh实例正在运行...不确定这是怎么回事autossh可以执行任何操作,但可以肯定curl不应该多次上传文件。 我的直觉是整个sshstart脚本运行了多次,但我不明白为什么。 我尝试在引导时搜索有关网络设置过程的详细信息,但我只能找到interfaces文件的语法信息。 …

2
在创建进程时打印进程的pid和名称
从这里的问题开始,OP希望重复轮询pidofshell脚本中使用的进程的pid 。当然,这效率很低,因为必须pidof每秒多次为该程序启动一个新进程(我不知道这是问题中CPU峰值的原因,但似乎很可能)。 通常,在Shell脚本中解决此类问题的方法是使用单个程序输出所需的数据stdout,然后在必要时进行一些文本处理。尽管这涉及到更多的程序要同时运行,但由于没有为轮询目的而不断创建新进程,因此它可能占用较少的CPU资源。 因此,对于上述问题,一个解决方案可能是拥有一些程序,该程序在创建过程时输出过程的名称和pid。然后,您可以执行以下操作: pids-names | grep some_program | cut -f 2 | while read pid; do process-pid "$pid" done 这样做的问题是,它提出了一个更基本的问题,如何在创建pid和进程名称时将它们打印出来? 我发现了一个名为的程序ps-watcher,尽管存在的问题是它只是一个perl反复运行的脚本,ps因此并不能真正解决问题。另一个选择是使用auditd,如果直接通过来处理日志,则可能会起作用tail -f。理想的解决方案比这更简单,更易于移植,但是auditd如果它是最佳选择,我将接受一个解决方案。

2
如果未设置,则追加到类似PATH的变量而不创建前导冒号
我需要将目录附加到PKG_CONFIG_PATH。通常,我会使用标准 export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:$(pyenv prefix)/lib/pkgconfig 但PKG_CONFIG_PATH以前未在我的系统上设置过。因此,变量以一个:字符开头,该字符告诉该变量首先在当前目录中查找。我不要那个。我解决了以下问题, export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}${PKG_CONFIG_PATH:+:}$(pyenv prefix)/lib/pkgconfig 但这看起来太丑了。有没有更好的办法?当且仅当已设置变量时,有条件地附加冒号的适当方法是什么?


4
正则表达式使用\\与\
为什么 grep e\\.g\\. <<< "this is an e.g. wow" 和 grep e\.g\. <<< "this is an e.g. wow" 做同样的事情? 如果添加第三个斜杠,则结果也相同。但是,一旦我添加了第四个斜杠,它将不再起作用。这与旧的考试题有关。它询问带有两个反斜杠的那个是否可以输出带有“ eg”的行,我本来以为这行不行,但是我尝试确定并且确实如此。有什么解释?

4
替换包含换行符的字符串
使用bash外壳程序,在具有以下行的文件中 first "line" <second>line and so on 我想更换的一次或多次出现"line"\n<second>用other characters,并获得每一次: first other characters line and so on 因此,我必须用特殊字符(例如"和)<和换行符来替换字符串。 在其他答案之间进行搜索之后,我发现该命令sed可以在命令的右侧(因此other characters字符串)接受换行符,但不能接受左侧的换行符。 有没有一种方法(比this更简单)使用sed或获得此结果grep?

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.