小编cas*_*cas的帖子

如何为特定进程设置“最大打开文件”软硬限制?

我用cat /proc/<pid>/limits命令检查了最大打开文件硬限制和软限制,但我想知道这个值将如何设置,可以增加或减少吗?

这个值是在某个配置文件中设置的吗?

我试过ulimit命令,但这对设置特定进程的限制没有帮助。

# ulimit -n 2048
Run Code Online (Sandbox Code Playgroud)

但我仍然看到 1024

# cat /proc/<pid>/limits
..
Max open files            1024                 4096                 files
..
Run Code Online (Sandbox Code Playgroud)

我知道有人问过类似的问题,但我找不到更好的答案。

process file-descriptors limit files ulimit

5
推荐指数
1
解决办法
4808
查看次数

创建授权密钥后仍然提示输入密码

我有一台 Macbook pro,我成功设置了授权密钥,这样每次登录远程机器时都不必输入密码。

多年后,我有了一台安装了 Ubuntu 的新计算机。我现在正在尝试做同样的事情,但我遇到了问题。

到目前为止,我已经运行ssh-keygen -t dsa并将我的~/.ssh文件夹的权限更改为 700,并将id_dsa*文件的权限更改为 600

我已经更新了authorised_keys远程机器上的文件,现在它看起来像:

ssh-rsa KEYFORTHEOLDMACHINEWHICHISTILLUSE
ssh-dss KEYFORTHENEWMACHINE
Run Code Online (Sandbox Code Playgroud)

我在两者之间有一个空间。我不知道这是否重要,但我没有尝试空格,并且它们之间也有换行符。

我已经确保我的服务器上的权限也如上。

但是当我ssh进入时,仍然提示我输入密码。有什么明显的我做错了吗?


更新:

当我运行时ls -ld ~/ ~/.ssh ~/.ssh/authorized_keys,我得到以下信息:

drwxr-xr-x 5 myusername domain users       4096 Jun  8 20:58 /home/myusername/
drwx------ 2 myusername domain users       4096 Jun  8 18:06 /home/myusername/.ssh
-rw------- 1 myusername subdept-phys-sags 1044 Jun  8 18:06 /home/myusername/.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)

更新:

当我运行时ssh -vv remote_server,我得到以下信息:

OpenSSH_7.2p2 Ubuntu-4, OpenSSL 1.0.2g-fips  1 Mar 2016
debug1: …
Run Code Online (Sandbox Code Playgroud)

ssh ubuntu

5
推荐指数
1
解决办法
495
查看次数

有没有一种简单的方法可以等效于`sed ...` 用多个值替换同一行?

我有一个文件,我想用 shell 脚本中的数据替换一些变量

-A INPUT -i lo -s @LOCAL_IP@ -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

这里我想用IP地址替换@LOCAL_IP@,我使用以下内容:

... | sed -e 's/@LOCAL_IP@/192.168.1.1/' | ...
Run Code Online (Sandbox Code Playgroud)

我的 shell 脚本中的变量中可能有 192.168.1.1,但这是提供基本思路。

现在,我有另一个规则,如下所示:

-A INPUT -i @PUBLIC_INTERFACE@ -p tcp -m tcp --dport 22
            -d @PUBLIC_IP@ -s @ADMIN_IPS@ --syn -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

(这是一条很长的行,为了便于阅读,在此处分解)

真正的输入文件将是输入文件中的许多行,大多数没有@ADMIN_IPS@,例如:

-A INPUT -i @PUBLIC_INTERFACE@ -p tcp -m tcp --dport 80 -d @PUBLIC_IP@ --syn -j ACCEPT
-A INPUT -i @PUBLIC_INTERFACE@ -p tcp -m tcp --dport 22 -d @PUBLIC_IP@ -s @ADMIN_IPS@ --syn -j ACCEPT
-A …
Run Code Online (Sandbox Code Playgroud)

sed array shell-script text-processing template

5
推荐指数
1
解决办法
450
查看次数

如何使用 xstarlet 从 XHTML 中删除具有特定类的 div?

我的子目录 (*) 中有数百个 .xhtml 文件,我想从中删除具有特定类的所有 DIV(以及这些 DIV 的全部内容 - 包括其他 div、span、图像和段落元素)。DIV 可以在每个 .xhtml 文件内的任意深度出现零次、一次或多次。

我要删除的具体DIV是:

<div class="portlet solid author-note-portlet">.....</div>
Run Code Online (Sandbox Code Playgroud)

使用xml_grepperl XML::Twig模块中的实用程序,我可以运行xml_grep -v 'div[@class="portlet solid author-note-portlet"]' file*.xhtml它,它将从 .xhtml 文件中删除该 div 的所有实例,并在 stdout 上显示结果。正是我想要的,除了“显示在标准输出上”。

如果xml_grep有某种就地编辑选项,那很好,我只是使用它......但它没有,所以我必须编写一个使用临时文件的包装器脚本或sponge运行xml_grep 分别针对每个 .xhtml 文件,这会很慢而且乏味。或者我可以破解 xml_grep 的副本,以便它可以编辑其输入文件。

但我不想做这两件事,我想使用已经可以做到这一点的现有工具,我想使用xmlstarlet- 它会更快,有就地编辑,而且我不必每个文件名运行一次。

问题是,无论我尝试什么(并且我已经尝试了数十种变体),我都无法找出正确的 xpath 规范来删除此类的 div。例如我尝试过:

xmlstarlet ed -d "div[@class='portlet solid author-note-portlet']" file.xhtml
Run Code Online (Sandbox Code Playgroud)

和(具有不同的引用)

xmlstarlet ed -d 'div[@class="portlet solid author-note-portlet"]' file.xhtml
Run Code Online (Sandbox Code Playgroud)

xmlstarlet ed -d '//html/body/div/div/div[@class="portlet solid author-note-portlet"]'
Run Code Online (Sandbox Code Playgroud)

以及数十种其他变体。它们都没有导致 xhtml 输出发生任何变化。这时候我通常会放弃 …

xmlstarlet

5
推荐指数
1
解决办法
444
查看次数

打印多个字段

有没有办法用单行命令打印多个字段?

我想打印 $3 到 $NF,我可以这样做:

awk -F[:] '{print $3,$4,$5 .... $NF}'
Run Code Online (Sandbox Code Playgroud)

然而,对于大量字段,它是不可行的,并且容易出错。

awk text-processing

4
推荐指数
1
解决办法
347
查看次数

sed `y` 命令可以只应用于匹配的文本(而不是整行)

写完这个答案后,我进行了一些谷歌搜索,以确定是否可以将 sedy//命令仅应用于匹配而不是整行。我找不到任何相关的东西。

$ echo clayii | sed -e '/clayii/ y/clayk/kieio/'
kieiii
Run Code Online (Sandbox Code Playgroud)

换句话说,如果搜索词 (clayii) 只是输入行中的许多词之一,我希望该y//命令应用于该词而不是该行的其余部分。

即我不想要这个:

$ echo can sed ignore everything but the matching word - clayii | 
    sed -e '/clayii/ y/clayk/kieio/'
ken sed ignore everithing but the metkhing word - kieiii
Run Code Online (Sandbox Code Playgroud)

这可能sed吗?或者我需要使用更强大的东西perl吗?

sed text-processing

4
推荐指数
1
解决办法
5522
查看次数

将变量传递给 AWK 在循环内不起作用

我有这个 awk 语句,它读取一个 YAML 文件并输出一个特定的值。我需要在一个循环中循环这个 awk,我从一个值列表中读取一个键值并将该键传递给 awk。

YAML 文件具有以下结构:

abc:
  NAME: Bob
  OCCUPATION: Technician
def:
  NAME: Jane
  OCCUPATION: Engineer
Run Code Online (Sandbox Code Playgroud)

说我想关键abc OCCUPATION的价值TECHNICIAN,通过谷歌搜索我设法建立一个awk语句,让我想要什么

> awk 'BEGIN{OFS=""} /^[^ ]/{ f=/^abc:/; next } f{ if (sub(/:$/,"")) abc=$2; else print abc,$1 $2}' test.yml| grep "OCCUPATION:" | cut -d':' -f2
Technician
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用这个循环,将 -v 选项传递给 awk 似乎没有任何意义:

items="abc,def"
for item in $(echo $items | sed "s/,/ /g"); 
do
 echo $item;
 awk -v name="$item" 'BEGIN{OFS=""} /^[^ ]/{ f=/^\name:/; next } f{ if (sub(/:$/,"")) name=$2; …
Run Code Online (Sandbox Code Playgroud)

bash awk perl text-processing yaml

4
推荐指数
2
解决办法
333
查看次数

centos上的zfs,无法创建文件?

我正在运行 centos7 ... 有 4 x 3tb hdd,所以我安装了 zfs,因为它看起来是最好的解决方案。我通过 root 安装和设置,但本地用户似乎无法写入文件/文件夹。谷歌不会产生任何结果,为什么它不会让不同的用户拥有写权限?所以我的问题是,如何授予本地用户在池中写入文件的权限?

zfs permissions centos

3
推荐指数
1
解决办法
4031
查看次数

如何从命令行删除多个子文件夹中的同名文件?

我有一个名为 的文件夹simulations,其中包含 101 个子文件夹。这些子文件夹被命名posterior_predictive_sim_1posterior_predictive_sim_101.

每个子文件夹包含五个文件:seq.nexseq[1].nexseq[2].nexseq[3].nexseq[4].nex

我想从每个子文件夹中删除文件seq[1].nexseq[2].nexseq[3].nex、 和seq[4].nex(以便仅seq.nex保留)。

我如何从命令行执行此操作?

command-line directory rm files delete

3
推荐指数
1
解决办法
1676
查看次数

bash 映射文件 NUL 错误?

bashmapfile在处理 NUL 分隔输入时似乎被破坏了。特别是,它无法-正确处理减号字符 ( ),将 1 后的空字符串视为行尾标记。

例如:

#!/bin/bash

mkdir /tmp/junk
cd /tmp/junk

touch a.txt b.txt c.txt d-e-f.txt
declare -a files

echo "mapfile using default \\n delimiter"
mapfile -t  files < <(find . -maxdepth 1 -type f -name '*.txt')
typeset -p files

echo
echo "mapfile using NUL delimiter"
mapfile -d'' -t  files < <(find . -maxdepth 1 -type f -name '*.txt' -print0)
typeset -p files

echo
echo "and again"
mapfile -d$'\0' -t  files < <(find . …
Run Code Online (Sandbox Code Playgroud)

bash null

2
推荐指数
1
解决办法
681
查看次数