AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-39069

RonJohn's questions

Martin Hope
RonJohn
Asked: 2024-12-13 02:18:11 +0800 CST

将多行 ssh 输出返回到单独的变量吗?

  • 5

RHEL 8.10

OpenSSH_8.0p1,OpenSSL 1.1.1k FIPS 2021 年 3 月 25 日

正如预期的那样,此行(包含两个嵌入命令)返回两行:

$ ssh -q remoteserver "ls -1 /proc/${p}/fd | wc -l ; ps -Ostate  -p${p} | tail -n1"
969
1353432 S S ?        00:00:12 pgpool: wait for accept lock

如何将每一行存储在本地服务器上的单独变量中?(因为我必须运行ssh数百次,并且每次都需要超过 0.25 秒,所以我试图尽量减少调用 ssh 的次数。)

目标是,例如,让变量FDcnt具有值 969,PidState并且1353432 S S ? 00:00:12 pgpool: wait for accept lock。

这可行,但似乎有点太 hacking 了:

blarge=()
while read -r
do 
    blarge+=("$REPLY")
done <<<$(ssh -q FISPCDSPGS202c "ls -1 /proc/${p}/fd | wc -l ; ps -Ostate  -p${p} | tail -n1")
echo ${blarge[0]}
970
$ echo ${blarge[1]}
1353432 S S ? 00:00:12 pgpool: fis_cds cdsbmop 10.55.96.151(33710) idle
bash
  • 1 个回答
  • 70 Views
Martin Hope
RonJohn
Asked: 2024-09-12 23:58:51 +0800 CST

gnu grep一个正则表达式中的多个过滤器

  • 3

RHEL 8,如果重要的话。

我需要在文本文件中找到符合这三个过滤器的所有行:

cut -f1 -d: .pgpass | grep ^FISP | grep -E 'CDS|TAP' | grep PGS401
FISPCDSPGS401A
FISPCDSPGS401B
FISPTAPPGS401AA
FISPTAPPGS401AB
FISPTAPPGS401BA
FISPTAPPGS401BB
FISPTAPPGS401CA
FISPTAPPGS401CB
FISPTAPPGS401DA
FISPTAPPGS401DB

这与 bash 的扩展通配符类似,是我正在寻找的命令类型,但不匹配。

cut -f1 -d: .pgpass | grep '^FISP@(CDS|TAP)PGS401'
cut -f1 -d: .pgpass | grep -E '^FISP@(CDS|TAP)PGS401'

秘诀是什么?

EDIT1:所有数据

$ cut -f1 -d: .pgpass | grep -v '^$'
FISPCDSPGS202a
FISPCDSPGS202a
FISPCDSPGS202c
FISPCDSPGS202b
FISPCDSPGS202b
FISPCDSPGS202c
FISPCDSPGS202
FISPCCPGS302a
FISPCCPGS302b
FISPCCPGS302a
FISPCCPGS302b
FISPCCPGS302c
FISPCCPGS302
FISPCDSPGS302a
FISPCDSPGS302b
FISPCDSPGS302a
FISPCDSPGS302b
FISPCDSPGS302c
FISPCDSPGS302
FISPTAPPGS302a
FISPTAPPGS302b
FISPTAPPGS302a
FISPTAPPGS302b
FISPTAPPGS302c
FISPTAPPGS302
FISPCCPGS405a
FISPCCPGS405b
FISPCCPGS405a
FISPCCPGS405b
FISPCCPGS405c
FISPCCPGS405
FISPCDSPGS405a
FISPCDSPGS405b
FISPCDSPGS405a
FISPCDSPGS405b
FISPCDSPGS405c
FISPCDSPGS405
FISPTAPPGS405a
FISPTAPPGS405b
FISPTAPPGS405a
FISPTAPPGS405b
FISPTAPPGS405c
FISPTAPPGS405
FISPCDSPGS202c
FISPCCPGS302c
FISPCDSPGS302c
FISPTAPPGS302c
FISPCCPGS405c
FISPCDSPGS405c
FISPTAPPGS405c
FISSLBXPGS202a
FISSLBXPGS202b
FISSLBXPGS302a
FISSLBXPGS302b
FISSLBXPGS405a
FISSLBXPGS405b
FISPCDSPGS401A
FISPCDSPGS401B
FISPTAPPGS401AA
FISPTAPPGS401AB
FISPTAPPGS401BA
FISPTAPPGS401BB
FISPTAPPGS401CA
FISPTAPPGS401CB
FISPTAPPGS401DA
FISPTAPPGS401DB
FISQCCPGS401A
FISQCCPGS401B
FISQCCPGS401A
FISQCCPGS401B
FISQCCPGS401C
FISQCCPGS401
FISQCDSPGS401A
FISQCDSPGS401B
FISQCDSPGS401A
FISQCDSPGS401B
FISQCDSPGS401C
FISQCDSPGS401
FISQTAPPGS401A
FISQTAPPGS401B
FISQTAPPGS401A
FISQTAPPGS401B
FISQTAPPGS401C
FISQTAPPGS401

编辑1:“点和星”似乎不起作用。

$ cut -f1 -d: .pgpass | grep '^FISP.*(CDS|TAP).*PGS401'
$ 
bash
  • 3 个回答
  • 46 Views
Martin Hope
RonJohn
Asked: 2024-06-20 21:57:08 +0800 CST

为什么 df 显示与“du --apparent-size”相同?

  • 8
悬赏将在 2 天后到期。回答此问题可获得+200声誉悬赏。RonJohn 希望引起更多人对此问题的 关注。

这似乎完全是倒退。(此 NFS 共享上的块大小为 512KiB,造成 20% 的浪费,但这是另一个问题。)

$ df -BM --output=used,target /Database/backups
    Used Mounted on
3842164M /Database/backups

$ du -cd0 -BM --apparent-size /Database/backups
3841946M        /Database/backups
3841946M        total

$ du -cd0 -BM /Database/backups
4631230M        /Database/backups
4631230M        total
filesystems
  • 1 个回答
  • 39 Views
Martin Hope
RonJohn
Asked: 2024-06-14 15:46:23 +0800 CST

为什么在外部作用域中将变量设置为只读会阻止定义具有相同名称的局部变量?

  • 17

我搜索了很久,也没找到任何关于此内容的信息。

在下面的代码中,Bar1其行为就像我期望“常规”变量的行为一样(因为help declare说它只-g在函数调用中“看到”):它根据范围(外部或内部)改变值。

Bar2,被“明确”声明,也像我期望的那样(gfhjnfd在外部范围内和blat内部范围内)。

但是Foo是全局不变的变量。 help declare只说“使 NAME 成为只读”。这个扩展(和不需要的)功能记录在哪里?

$ cat test.sh
#!/bin/bash

declare -r Foo=bar
declare -g Bar1=fdhtbn
declare Bar2=gfhjnfd

X()
{
    local Foo=$1
    local Bar1=snorkel
    local Bar2=$2
    echo Foo in X = $Foo
    echo Bar1 in X = $Bar1
    echo Bar2 in X = $Bar2
}

echo Foo, above X, = $Foo
echo Bar1, above X = $Bar1
echo Bar2, above X = $Bar2
echo
X baz blat
echo
echo Foo, below X, = $Foo
echo Bar1, below X = $Bar1
echo Bar2, below X = $Bar2

$ ./test.sh
Foo, above X, = bar
Bar1, above X = fdhtbn
Bar2, above X = gfhjnfd

./test.sh: line 9: local: Foo: readonly variable
Foo in X = bar
Bar1 in X = snorkel
Bar2 in X = blat

Foo, below X, = bar
Bar1, below X = fdhtbn
Bar2, below X = gfhjnfd
bash
  • 3 个回答
  • 1131 Views
Martin Hope
RonJohn
Asked: 2024-06-12 22:58:38 +0800 CST

仅将 -o xtrace 设置为一行?[重复]

  • 7
此问题这里已有答案:
有没有办法为单个命令设置 bash 标志? (4 个答案)
脚本中的内联调试(xtrace) (1 个答案)
7 天前关闭。

RHEL 8.4 上的 bash 4.4.20(1)。

set -x ; ./blarge ; set +x 当然可以,但完成后需要记住删除的东西太多了。如果你运行 ssh、sudo 等,就会变得很棘手。

因此,正如主题中所提到的,是否有某种方法可以告诉set -x只在一行上工作,就像FOO=bar ./blarge将 FOO 变量设置为只为执行一次 blarge 而 barge 一样?

declare Srv=s1.example.com
declare DB=a_db
declare Tables="-t table1 -t table2"

date +"%F %T, %a Starting"
set -x
vacuumdb --host=$Srv -j2 --dbname=$DB $Tables --analyze
set +x
date +"%F %T, %a Finished"
bash
  • 2 个回答
  • 53 Views
Martin Hope
RonJohn
Asked: 2024-01-07 21:12:16 +0800 CST

什么在使用看似空的分区上的所有空间?

  • 10

操作系统:RHEL8 文件系统:xfs

我猜测某个僵尸进程正在占用该空间,但我找不到它。

问题在于/var/lib/pgsql/14,它df表示正在使用 1.1TB 的空间:

$ sudo df -T -xtmpfs -xdevtmpfs -h --sync  
Filesystem                                 Type  Size  Used Avail Use% Mounted on
/dev/sda2                                  xfs   126G   14G  113G  11% /
/dev/sda1                                  xfs   2.0G  658M  1.4G  33% /boot
/dev/mapper/pgsql14vg-pgsql141v            xfs   5.4T  1.1T  4.4T  20% /var/lib/pgsql/14
/dev/mapper/pglogvg-pglog1v                xfs    15G  292M   15G   2% /var/log/postgresql
FISPFILNAS01.xxxxxxxxxxxx:/DB_backups_TAPb nfs4   15T  2.3T   13T  16% /var/lib/pgsql/14/backups

然而,du说它只有 12GB 的文件:

$ du -x -d2 -h /var/lib/pgsql/14 | sort -k2
12G     /var/lib/pgsql/14
12G     /var/lib/pgsql/14/data
42M     /var/lib/pgsql/14/data/base
2.8M    /var/lib/pgsql/14/data/global
0       /var/lib/pgsql/14/data/pg_commit_ts
0       /var/lib/pgsql/14/data/pg_dynshmem
4.0K    /var/lib/pgsql/14/data/pg_logical
16K     /var/lib/pgsql/14/data/pg_multixact
0       /var/lib/pgsql/14/data/pg_notify
0       /var/lib/pgsql/14/data/pg_replslot
0       /var/lib/pgsql/14/data/pg_serial
0       /var/lib/pgsql/14/data/pg_snapshots
0       /var/lib/pgsql/14/data/pg_stat
976K    /var/lib/pgsql/14/data/pg_stat_tmp
192K    /var/lib/pgsql/14/data/pg_subtrans
0       /var/lib/pgsql/14/data/pg_tblspc
0       /var/lib/pgsql/14/data/pg_twophase
12G     /var/lib/pgsql/14/data/pg_wal
112K    /var/lib/pgsql/14/data/pg_xact

我什至尝试卸载该设备(在关闭 PostgreSQL 后),但它很忙,尽管 lsof 说没有进程正在使用它:

$ export PS1="$ "
$ sudo lsof /var/lib/pgsql/14
$ 

添加lsof +L1输出:

$ sudo lsof +L1
COMMAND     PID    USER   FD   TYPE DEVICE SIZE/OFF NLINK      NODE NAME
dbus-daem  1182    dbus   22r   REG    8,2 11567160     0 135113565 /var/lib/sss/mc/initgroups (deleted)
polkitd    1887 polkitd    3r   REG    8,2 11567160     0 134903325 /var/lib/sss/mc/initgroups (deleted)
python.or  1899    root    6w   REG    8,2     1434     0  67157239 /var/log/venv-salt-minion.log-20231217 (deleted)
python.or  1899    root    7r   REG    8,2 11567160     0 134903325 /var/lib/sss/mc/initgroups (deleted)
sssd      16382    root   14r   REG    8,2 11567160     0 134903325 /var/lib/sss/mc/initgroups (deleted)
sssd_be   16383    root   18r   REG    8,2 11567160     0 134903325 /var/lib/sss/mc/initgroups (deleted)
filesystems
  • 2 个回答
  • 384 Views
Martin Hope
RonJohn
Asked: 2023-11-22 06:39:49 +0800 CST

查找两个模式之间的所有线条,第二个模式独有的?

  • 5

考虑一下我有下面列出的文件。我需要选择正则表达式模式的每个实例Word A到正则表达式模式之前的Word D所有行。

Word A
Word B
Word C
Word D
Word E
Word F
Word G
Word A
Word H
Word I
Word D
Word J
Word A
Word K
Word D
Word L
Word M
Word A
Word D

A请注意和之间的可变行数D。有时,D是下一行。这就是我需要的输出:

Word A
Word B
Word C
Word A
Word H
Word I
Word A
Word K
Word A

可以使用 awk、perl、python 或 sed 完成。只要安装在文件所在的 RHEL6 服务器上就没有关系。

awk
  • 6 个回答
  • 229 Views
Martin Hope
RonJohn
Asked: 2021-12-06 08:45:09 +0800 CST

ssh、heredoc 和环境变量

  • -1
这个问题在这里已经有了答案:
在 heredoc 中传递和设置变量 1 个答案
10 个月前关闭。

(这是 RHEL 8.4,如果重要的话。)

该echo脚本中第 5 行和第 7 行的命令在本地主机上运行,​​但第hostname6 行和第 8 行的命令按预期在远程主机上运行。

为什么第 5 行和第 7 行在本地主机上运行?更重要的是,如何让它们在远程主机上运行?

编辑:我不想传递变量。我希望在远程服务器上单独定义和使用变量。

 1 #!/bin/bash
 2 export foo=bar
 3 ssh -q ${1} <<EOF
 4     export foo=blarge
 5     echo $foo
 6     hostname
 7     echo $foo
 8     hostname
 9 EOF
10 hostname
shell-script here-document
  • 1 个回答
  • 347 Views
Martin Hope
RonJohn
Asked: 2020-01-05 10:31:25 +0800 CST

如何在两个模式之间选择第一个出现,包括第一个?

  • 2

类似于但不完全类似于如何在包括它们在内的两个模式之间选择第一次出现......给定这个输入文件:

something P1 something
content1
content2
something P1 something
content3
content4

我只需要这个输出:

something P1 something
content1
content2
awk sed
  • 4 个回答
  • 1360 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve