Unix & Linux

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

1
Powerline在Vim中设置错误
我根据他们的安装建议使用pip install安装了电力线。我在zsh作为提示和tmux作为状态行都可以正常工作,但我无法在vim中正常工作。 当我将以下内容添加到我的vimrc中时: python from powerline.vim import setup as powerline_setup python powerline_setup() python del powerline_setup 我收到以下错误 Error detected while processing /home/jordan/.vimrc: line 1: E319: Sorry, the command is not available in this version: python from powerline.vim import setup as powerline_setup line 2: E319: Sorry, the command is not available in …
9 vim  vimrc 

4
shell脚本是否可以打印其引号,就像您在shell提示符下编写引号一样?
在shell脚本中,我的理解是"$@"扩展到脚本参数,并根据需要引用它们。例如,这会将脚本参数转发给gcc: gcc -fPIC "$@" 但是,当使用bash传递到stdin的语法时<<<,"@$"却无法正常运行。 #!/bin/bash cat <<< "$@" 调用脚本./test.sh foo "bar baz"给 foo bar baz 我希望 foo "bar baz" 有没有一种方法可以像在shell提示符下那样编写可打印其参数的shell脚本?例如:关于下一步要使用的命令的提示,包括提示中的脚本参数。

2
如何保护我的系统免受Linux中的Off-path TCP攻击?
根据cve.mitre.org的说法,4.7之前的Linux内核容易受到“偏离路径” TCP漏洞的攻击 描述 4.7之前的Linux内核中的net / ipv4 / tcp_input.c不能正确确定质询ACK段的速率,这使得中间人攻击者更容易通过盲目窗口内攻击来劫持TCP会话。 该漏洞被认为是危险的,因为攻击者仅需要IP地址即可执行攻击。 将Linux内核升级到最新的稳定版本是否4.7.1成为保护我的系统的唯一方法?

1
Ubuntu Service samba被屏蔽,无法启动
我正在尝试在Ubuntu服务器上运行samba服务,它给了我错误信息,并说它被掩盖了并且死了,我该如何解决?是什么导致它像这样? 这是我得到的错误:- 无法启动samba.service:单位samba.service被屏蔽。如果我在Virtual Box上运行Ubuntu服务器,那会是问题吗?谢谢。
9 linux  ubuntu 

2
bash中单引号$'string'和双引号$“ string”有什么区别?
我试图使用执行新行,echo并尝试了以下两个命令: 第一条命令: echo $'Hello World\nThis is a new line' 响应: Hello World This is a new line 第二条命令: echo $"Hello World\nThis is a new line" 响应: Hello World\nThis is a new line 我的问题是什么是用包裹串之间的区别$' '与包裹VS字符串$" "中bash的echo?
9 bash  quoting  echo 

4
为什么新的Intel i7-6500U CPU无法启动linux内核?
我知道很难隔离CPU,但是我看到的错误表明这就是问题所在。 这绝对不是故障或损坏的硬件问题。在过去的几天里,我整天都在运行Windows 10,这件事很快!没有崩溃。更重要的是,我运行Windows内存检查器。记忆力很好。 机器规格 该机器是全新的联想Yoga 710 15英寸 x64 Intel i7-6500 CPU @ 2.50 GHz, 2601 Mhz, 2 Cores, 4 Logical Processors SMBIOS Version 2.8 BIOS Mode UEFI 16.0 GB DDR4 Ram 256 MB SSD 隔离到Linux内核(?) 我在两个地方都遇到了相同的问题 archlinux-2016.08.01-dual.iso ubuntu-gnome-16.04.1-desktop-amd64.iso 对于Arch,问题只是在从USB记忆棒启动时间歇出现。我设法将Arch安装在驱动器的100GB ext4分区上。该安装在引导期间会间歇性地出现相同的问题(例如90%的时间)。如果我通过了引导程序,那么在我执行第一对终端命令后,该问题就会随机出现,最终导致完全死锁。 对于Ubuntu-USB记忆棒甚至无法启动。我立即被这些相同的错误所制止。僵局... 这么多错误... 每当发生这种情况时,日志中都会塞满与内存相关的错误,但是我看到的主要错误是: General protection fault 0000[#1] PREEMPT SMP RIP …


4
如果禁用selinux会发生什么问题[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 3年前关闭。 我们从另一个团队那里继承了一堆二手服务器。其中有些启用了SELinux,有些则没有。由于SELinux的,我们是无法设置密码的ssh,我们的网络服务器等,我们发现一个变通此stackexchange网站,这是运行: restorecon -R -v ~/.ssh 但是,由于我们不需要运行SELinux来完成工作,因此将其关闭可能比记住每个人都需要权限的目录运行上述cmd容易。 我们是否可以关闭SELinux而不产生任何影响,还是重新映像服务器更好?需要注意的一件事;我们的IT团队真的很忙,因此除非是绝对必要(需要非常好的业务案例),否则重新映像服务器的位置并不高...或者有人用一瓶苏格兰威士忌或威士忌贿赂老板。 更新:感谢大家的建议。这些服务器都将用作内部开发服务器。这些机器将不会有外部访问,因此安全性不是我们关注的重点。据我们所知,我们目前使用的所有服务器均未启用SELinux。我的经理刚刚获得的一些服务正在执行,而那些我们正在禁用的服务正在执行,因此集群中的所有内容都是统一的。
9 linux  ssh  selinux 

1
用户x无法使用该程序(crontab)
Ubuntu 14.04 我不了解为服务(无登录)帐户(名为curator)设置crontab时看到的行为。 当我以root用户身份登录时,这是我得到的: # crontab -u curator -l The user curator cannot use this program (crontab) 但是,当我切换到该用户的帐户时,它可以正常工作: # su -s /bin/bash curator curator@host$ crontab -l no crontab for curator 有一个空/etc/cron.allow文件,并没有/etc/cron.deny在系统上的文件。根据man crontab: 如果存在/etc/cron.allow文件,则必须在其中列出您(每行一个用户),以便允许使用此命令。如果/etc/cron.allow文件不存在,但/etc/cron.deny文件确实存在,则必须在/etc/cron.deny文件中未列出您才能使用此命令。 当我运行第一个命令时,我理解该错误,但是crontab当我明确切换到用户帐户时,为什么它允许我运行? 将用户添加到/etc/cron.allow使两个命令都能正常工作。
9 ubuntu  cron 

1
安装Docker会挂在ubuntu xenial上的“设置docker-engine”上
我正在尝试在ubuntu xenial上安装docker并遵循本教程:https ://docs.docker.com/engine/installation/linux/ubuntulinux/ 。到目前为止,一切顺利,只是我的内核版本(4.6.0-040600-generic)显然没有linux-image-extra。该教程说,这不是必需的,因此我认为这不是完全必要的。 我到了要运行的地步,sudo apt-get install docker-engine安装正在进行中Setting up docker-engine (1.11.2-0~xenial) ...。我已经看过了top,它没有使用任何CPU,所以我认为它实际上没有做任何事情。我最终重新启动计算机,摆脱了部分安装的软件包,并结合了dpkg -r,apt-get --purge remove以及其他一些我已经忘记的相关内容,然后尝试重新安装它。它以相同的方式挂起。 如何成功安装?
9 ubuntu  apt  docker 

3
用一个空格替换句子结尾后两个空格的所有出现
我陷入了sed命令包含正则表达式的困境。 问:我想用一个空格代替句子结尾后两个空格的所有出现。 这是我所做的: sed 's/^ $/^$/' file 句子结束后,它没有用一个空格代替两个空格。 我得到的输出: This is the output. Hello Hello 我想要的输出: This is the output. Hello Hello

2
Grep找到正确的行,用sed更改内容,然后将其放回原始文件中?
我正在尝试更改文件中特定行上的单个单词,但是将所有单词连接在一起时遇到了一些麻烦。 基本上,在文件的一行上有一个关键字“ firmware_revision”,并且在这一行(并且只有这一行)上,我想用“生产”一词代替“测试”一词。 所以我可以这样做: grep 'firmware_revision' myfile.py | sed 's/test/production' 这将挑选出我想要的行并执行替换,但是我不知道如何将新行插入原始文件以替换旧行。我显然不能仅仅将其重定向回文件,那么该怎么办? 即使我使用临时文件,通过使用临时grep文件,我也需要丢失文件中的所有其他数据,因此,我不再只能将所有文件重定向到临时文件,而是用临时文件替换原始文件。 编辑-有人要求更多信息 可以说我有一个像这样的文件 [ ('key_name1', str, 'value1', 'Description'), ('key_name2', str, 'value2', 'Description'), ('key_name3', str, 'value3', 'Description'), ('firmware_revision', str, 'my-firmware-name-test', 'Firmware revision name') ] 现在,我想编写一个脚本(最好是单行代码),该脚本将找到包含“ firmware_revision”的行,并将该行中“ test”一词的所有实例更改为“ production”。“测试”一词可能在该文件的其他位置,我不希望更改这些内容。为了清楚起见,我想将上面的行更改为 ('firmware_revision', str, 'my-firmware-name-production', 'Firmware revision name') 我该怎么做呢?

1
如何在NixOS中安装一次性软件包?
我的nixos-16.03频道上有一个NixOS盒子。我希望机器保持在最稳定的状态,所以我想避免切换到nixos-unstable通道。 但是,我需要安装一个比该渠道(nodejs-6_x在本例中)可用的更新版本的软件包。手册中有描述“ 一键安装”的部分,乍一看似乎完全符合我的需要。但是,http://hydra.nixos.org上的Hydra服务器似乎没有提供该部分中描述.nixpkg的nix-install-package工具使用的任何文件。 Wiki还记录了一个过程,通过该过程可以自定义程序包(该页面称为Modifying Packages),我认为这可以用于我的目的,尽管似乎我是在与该工具而不是使用它作斗争。 我也在IRC中问过这个问题(感谢M-Ralith您耐心地回答我的无知问题!),但我不太了解如何应用它。建议是“在您的nixpkgs配置中覆盖src和版本”,这听起来像我可以在其中写入nix表达式.nixpkgs/configuration.nix并在我的订阅频道(nixos-16.03)中覆盖包的那些属性。当我问到通道中不存在的软件包时,建议是“指定整个软件包,而不是覆盖src和版本”,这意味着我需要为该软件包复制整个nix表达式。我感兴趣的是。nix-env 对于要安装在另一个渠道中但仍保留在当前渠道中的软件包,是否有更好的方法?它几乎感觉就像我应该可以做这样的事情nix-build <url> | nix-env -i。理想的情况是先关闭此设备,但如果我的当前频道赶上来,则没有可以阻止它稍后升级的配置。
9 nixos  nix  nixpkgs 

7
grep来自file2的确切行块(file1的内容)
我有两个文件,file1和file2。 的样本内容file1是: A B C D E F G H 的内容file2如下: A B few other lines E F few more other lines A B C D E F G H few more other lines G H 因此,我只想搜索整个file1内容块file2。这意味着输出应仅包含以下行: A B C D E F G H 请注意:-只有合并在一起的行才应该是输出的一部分。

1
重定向stderr后,对bash脚本的输出进行配管[关闭]
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加详细信息并通过编辑此帖子来澄清问题。 2年前关闭。 由于托管人的处理方式,我必须使用系统进行服务。 该服务有一个运行文件,它将执行该文件并将其传输到第二个运行文件中。但是我使用了一个(给定的)python程序包,该程序包记录到stderr而不是stdout,所以我无法让它做我想做的事情。 所以我有一个服务运行脚本: #!/bin/sh cd ~/webapp/PriceList exec python3.4 ~/webapp/PriceList/src/main.py 它通过管道传送到日志记录系统的运行中: #!/bin/sh exec multilog t ./main 但是管道没有连接stderr(如预期的那样)。因此,在谷歌搜索之后,我向运行添加了重定向: #!/bin/sh cd ~/webapp/PriceList exec python3.4 ~/webapp/PriceList/src/main.py 2>&1 但这不能解决我的问题:我自己的输出(使用pythons print输出到stdout)已按预期记录。stderr输出未记录。 如果将修改后的runscript重定向到两个文件中,则表明没有重定向(stderr仍在stderr上)。我必须如何修改重定向才能正常工作?

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.