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-8839

Just a learner's questions

Martin Hope
Just a learner
Asked: 2025-01-09 04:15:10 +0800 CST

如何在 1 分钟无输出后自动终止 shell 脚本

  • 13

我需要按顺序运行多个 shell 脚本 (s1.sh、s2.sh、s3.sh),要求如下:

  • 如果脚本 1 分钟内没有输出(stdout 或 stderr),则应终止
  • 终止后,下一个脚本将自动运行
  • 这应该持续到所有脚本都处理完毕

现状:

  • 脚本在任务完成后不会自行退出
  • 目前,我手动监控每个脚本,Ctrl-c当发现一段时间没有输出时,请按
  • 需要自动化这种手动干预

工作流程示例:

  1. 运行 s1.sh
  2. 如果 s1.sh 静默 1 分钟 → 终止它 → 运行 s2.sh
  3. 如果 s2.sh 静默 1 分钟 → 终止它 → 运行 s3.sh
  4. ...等等

我正在考虑的潜在方法:我正在考虑将 stdout 和 stderr 重定向到一个文件,并每秒检查一次该文件的修改时间。如果该文件 1 分钟内没有被写入,我可以假设脚本没有输出并终止它。但是,我不确定这种方法是否可行,或者是否有更好的解决方案。

有人实现过类似的东西吗?谢谢。

bash
  • 2 个回答
  • 856 Views
Martin Hope
Just a learner
Asked: 2024-11-23 14:56:42 +0800 CST

理解 Linux ‘top’ 命令:内存与交换显示格式混淆

  • 12

尽管显示在交换行上,但“avail Mem”值是否实际上与物理内存而不是交换有关?我注意到“swap used”列末尾有一个句号。

linux
  • 2 个回答
  • 504 Views
Martin Hope
Just a learner
Asked: 2020-01-16 05:54:05 +0800 CST

“join”实用程序报告:文件未排序,但实际上已排序

  • 0

我有两个文件t1和t2.

root@localhost:~#
root@localhost:~# cat t1
udp  UNCONN  0  0    0.0.0.0:68      0.0.0.0:*  users:(("dhclient",pid=479,fd=7))     479
tcp  LISTEN  0  128  127.0.0.1:6060  0.0.0.0:*  users:(("gggg-ruit",pid=24968,fd=5))  24968
root@localhost:~#
root@localhost:~# cat t2
root        88  0.0  0.0      0     0 ?        I<   Jan06   0:00 [scsi_tmf_0]
root        96  0.0  0.0      0     0 ?        I<   Jan06   0:00 [ipv6_addrconf]
root     24965  0.0  0.2  11592  3004 ?        S    Jan12   0:00 bash /root/restart_gggg.sh
root     24968  0.7  5.2 112488 53472 ?        Sl   Jan12  30:52 /usr/local/bin/gggg-ruit -singleInstance :44444

我想在 t1 的第 8 列和 t2 的第 2 列加入他们。我已经按排序顺序排列了它们。让我们证明一下。

root@localhost:~# awk '{print $8}' t1
479
24968
root@localhost:~# awk '{print $2}' t2
88
96
24965
24968

现在当我join他们时,我得到了以下错误。

root@localhost:~# join -1 8 -2 2 -o 2.1,2.2,1.1,1.2,1.5,1.6,2.11 t1 t2
join: t2:3: is not sorted: root     24965  0.0  0.2  11592  3004 ?        S    Jan12   0:00 bash /root/restart_gggg.sh
root@localhost:~#

为什么它告诉我 t2 没有在第 3 行排序?如您所见,它已经在连接列上进行了排序。

text-processing text-formatting
  • 1 个回答
  • 238 Views
Martin Hope
Just a learner
Asked: 2020-01-13 10:56:23 +0800 CST

有什么理由使用这个自定义的 read_char 函数而不是内置的 read 命令?

  • 1

我不擅长 bash 和 Linux。我正在阅读一个脚本,我发现了以下函数。

get_char()
{
    SAVEDSTTY=`stty -g`
    stty -echo
    stty cbreak
    dd if=/dev/tty bs=1 count=1 2> /dev/null
    stty -raw
    stty echo
    stty $SAVEDSTTY
}

基本上,它用于实现这样的按任意键继续功能。

echo "Press any key to continue!"
char=`get_char`

我知道您可以使用内置read命令来实现这一点。例如:

read -rsn1 -p "Press any key to continue"

有什么理由使用这个函数而不是内置read命令?

shell-script read
  • 1 个回答
  • 136 Views
Martin Hope
Just a learner
Asked: 2020-01-09 02:52:34 +0800 CST

为什么我的颜色没有在所有终端中显示?

  • 1

我有以下一段代码。

bold=''
reset=$(echo -en '\033[0m')
black=$(echo -en '\e[1;30m')
magenta=$(echo -en '\033[00;35m')
blue=$(echo -en '\e[1;34m')
cyan=$(echo -en '\e[1;36m')
green=$(echo -en '\e[1;32m')
orange=$(echo -en '\e[1;33m')
purple=$(echo -en '\e[1;35m')
red=$(echo -en '\e[1;31m')
white=$(echo -en '\e[1;37m')
yellow=$(echo -en '\e[1;33m')
lime_yellow=$(echo -en '\e[1;33m')
power_blue=$(echo -en '\e[1;34m')
blink=$(echo -en '\e[1;31m')
reverse=$(echo -en '\e[1;31m')
underline=$(echo -en '\e[1;31m')

if [ -x /usr/bin/tput ] && tput setaf 1 &>/dev/null; then
    echo "tput color is supported."
    tput sgr0 # Reset colors
    bold=$(tput bold)
    reset=$(tput sgr0)
    black=$(tput setaf 0)
    magenta=$(tput setaf 5)
    blue=$(tput setaf 33)
    cyan=$(tput setaf 37)
    green=$(tput setaf 64)
    orange=$(tput setaf 166)
    purple=$(tput setaf 125)
    red=$(tput setaf 124)
    white=$(tput setaf 15)
    yellow=$(tput setaf 136)
    lime_yellow=$(tput setaf 190)
    power_blue=$(tput setaf 153)
    blink=$(tput blink)
    reverse=$(tput smso)
    underline=$(tput smul)
else
    echo "tput color is not supported. Use old school colors."
fi

echo ${red}RED${green}GREEN${yellow}YELLOW${blue}BLUE${purple}PURPLE${cyan}CYAN${white}WHITE${reset}

基本上有两种颜色,tput生成的或老式的转义字符,如\e[1;32m. 由于tput类型更有趣,例如它支持闪烁和下划线,因此代码tput尽可能使用类型颜色。这是一张证明它在 Oracle Linux 7.6(有点像 RedHat 或 CentOS)GUI 环境中按预期工作的图像。

在此处输入图像描述

当我从其他终端运行它时,它不起作用。例如,下面是在 MobaXterm 中运行时的快照。

在此处输入图像描述

我也试过putty了,也不行。我的代码有什么问题吗?


更新

我echo $TERM在每个终端执行,下面是结果。

带有桌面环境的 Oracle Linux(彩色作品)
输出:xterm-256color

Windows 上的 MobaXterm(颜色不起作用)
输出:xterm

Windows 上的腻子(颜色不起作用)
输出:xterm
terminal gnome
  • 3 个回答
  • 2025 Views
Martin Hope
Just a learner
Asked: 2019-08-29 23:24:40 +0800 CST

这个 sed 的结果中最后一个换行符来自哪里?

  • 7

我正在学习 sed 的不同命令并做了一些实验。我正在尝试的命令是:

root:[~]# seq 7 | sed -n '1~2H; 2~2{G;p}'
2

1
4

1
3
6

1
3
5
root:[~]#

我分析了命令,对我来说,数字后面的最后一个换行符5不应该存在。下面是我的分析。

在此处输入图像描述

根据我的分析,输出应该是红色背景的单元格。如您所见,没有最后一个换行符。我哪里错了?提前致谢。

sed newlines
  • 2 个回答
  • 306 Views
Martin Hope
Just a learner
Asked: 2019-08-28 13:43:58 +0800 CST

Gnu sed 的“i text”和“i\ ....”命令之间有什么区别吗?[复制]

  • 0
这个问题在这里已经有了答案:
sed 2 答案 中的第一个附加换行符需要额外的反斜杠
3年前关闭。

以下是 Gnu sed 文档的摘录,网址为https://www.gnu.org/software/sed/manual/sed.html

i text
insert text before a line. This is a GNU extension to the
standard i command - see below for details.

i\
text
Immediately output the lines of text which follow this command.

这两种语法的措辞是完全不同的。过去,我认为它们具有完全相同的行为,只是语法不同。我做了一堆实验,所有测试都给出了相同的结果。我想确认一下,这两种语法有什么区别吗?提前致谢。

sed
  • 1 个回答
  • 50 Views
Martin Hope
Just a learner
Asked: 2019-08-26 11:14:15 +0800 CST

/usr/bin/truncate: 参数列表太长

  • 2

我想使用该truncate命令创建大量小文件进行测试。我用少量文件(100 个)尝试了该命令,它起作用了。当我将数字更改为1000000时,它会报告错误:

root:[~/data]# truncate -s 1k {1..100}
root:[~/data]# rm -rf *
root:[~/data]# truncate -s 1k {1..1000000}
-bash: /usr/bin/truncate: Argument list too long
root:[~/data]#

我该如何解决?我有一种xargs可以使用的感觉,但我无法让它发挥作用。

bash files
  • 2 个回答
  • 540 Views
Martin Hope
Just a learner
Asked: 2019-08-25 07:14:49 +0800 CST

这些“主机”目录是什么?

  • 0

我正在使用 Oracle Linux 7.6,它是基于 RHEL 7.6 的发行版。以下测试在 RHEL 7.6 或其他基于 RHEL 7.6 的发行版上应该是相同的。

我在 Windows 10 上的 VMware Workstation 中运行 Oracle Linux 7.6 服务器。我要做的是在不重新启动 Linux 服务器的情况下将磁盘添加到 Linux 来宾虚拟机。我四处搜索并找到了这个页面:https ://rahsupport.wordpress.com/2017/08/10/vmware-add-disk-to-linux-without-rebooting-the-vm/ 。基本上,它的作用是:

  • 将磁盘从 VMware Workstation 添加到 Linux VM
  • 去/sys/class/scsi_host/
  • 跑echo '- - -' > host1/scan
  • 然后运行fdisk -l,就可以看到新添加的磁盘了

我在我的环境中对其进行了测试。有三个这样的主机目录,每个目录中都有一个scan文件:

root:[/sys/class/scsi_host]# ls -la
total 0
drwxr-xr-x.  2 root root 0 Aug 24 22:49 .
drwxr-xr-x. 54 root root 0 Aug 24 22:49 ..
lrwxrwxrwx.  1 root root 0 Aug 24 22:49 host0 -> ../../devices/pci0000:00/0000:00:07.1/ata1/host0/scsi_host/host0
lrwxrwxrwx.  1 root root 0 Aug 24 22:49 host1 -> ../../devices/pci0000:00/0000:00:07.1/ata2/host1/scsi_host/host1
lrwxrwxrwx.  1 root root 0 Aug 24 22:49 host2 -> ../../devices/pci0000:00/0000:00:10.0/host2/scsi_host/host2
root:[/sys/class/scsi_host]#
root:[/sys/class/scsi_host]# ls -la */scan
--w-------. 1 root root 4096 Aug 24 22:50 host0/scan
--w-------. 1 root root 4096 Aug 24 22:50 host1/scan
--w-------. 1 root root 4096 Aug 24 22:50 host2/scan
root:[/sys/class/scsi_host]#

原来Linux服务器无法识别磁盘:

root:[/sys/class/scsi_host]# fdisk -l

Disk /dev/sda: 1099.5 GB, 1099511627776 bytes, 2147483648 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000d3e78

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      976895      487424   83  Linux
/dev/sda2          976896  2059401215  1029212160   83  Linux
/dev/sda3      2059401216  2101344255    20971520   83  Linux
/dev/sda4      2101344256  2147483647    23069696    5  Extended
/dev/sda5      2101348352  2143289343    20970496   83  Linux
/dev/sda6      2143291392  2147483647     2096128   82  Linux swap / Solaris

但是当我运行时echo '- - -' > host0/scan,磁盘出现了:

root:[/sys/class/scsi_host]# echo '- - -' > host0/scan
root:[/sys/class/scsi_host]# fdisk -l

Disk /dev/sda: 1099.5 GB, 1099511627776 bytes, 2147483648 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000d3e78

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      976895      487424   83  Linux
/dev/sda2          976896  2059401215  1029212160   83  Linux
/dev/sda3      2059401216  2101344255    20971520   83  Linux
/dev/sda4      2101344256  2147483647    23069696    5  Extended
/dev/sda5      2101348352  2143289343    20970496   83  Linux
/dev/sda6      2143291392  2147483647     2096128   82  Linux swap / Solaris

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

root:[/sys/class/scsi_host]# 

我将我的 Linux VM 恢复到其原始状态以再次测试。这次它表明这echo '- - -' > host1/scan不起作用,但echo '- - -' > host2/scan有效。

root:[/sys/class/scsi_host]# fdisk -l

Disk /dev/sda: 1099.5 GB, 1099511627776 bytes, 2147483648 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000d3e78

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      976895      487424   83  Linux
/dev/sda2          976896  2059401215  1029212160   83  Linux
/dev/sda3      2059401216  2101344255    20971520   83  Linux
/dev/sda4      2101344256  2147483647    23069696    5  Extended
/dev/sda5      2101348352  2143289343    20970496   83  Linux
/dev/sda6      2143291392  2147483647     2096128   82  Linux swap / Solaris
root:[/sys/class/scsi_host]# echo '- - -' > host1/scan
root:[/sys/class/scsi_host]# fdisk -l

Disk /dev/sda: 1099.5 GB, 1099511627776 bytes, 2147483648 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000d3e78

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      976895      487424   83  Linux
/dev/sda2          976896  2059401215  1029212160   83  Linux
/dev/sda3      2059401216  2101344255    20971520   83  Linux
/dev/sda4      2101344256  2147483647    23069696    5  Extended
/dev/sda5      2101348352  2143289343    20970496   83  Linux
/dev/sda6      2143291392  2147483647     2096128   82  Linux swap / Solaris
root:[/sys/class/scsi_host]# echo '- - -' > host2/scan
root:[/sys/class/scsi_host]# fdisk -l

Disk /dev/sda: 1099.5 GB, 1099511627776 bytes, 2147483648 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000d3e78

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      976895      487424   83  Linux
/dev/sda2          976896  2059401215  1029212160   83  Linux
/dev/sda3      2059401216  2101344255    20971520   83  Linux
/dev/sda4      2101344256  2147483647    23069696    5  Extended
/dev/sda5      2101348352  2143289343    20970496   83  Linux
/dev/sda6      2143291392  2147483647     2096128   82  Linux swap / Solaris

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

root:[/sys/class/scsi_host]#

我的问题是,这些主机目录是什么?为什么echo '- - -' > host0/scan并且echo '- - -' > host2/scan会让Linux服务器识别磁盘,但echo '- - -' > host1/scan不能?

顺便说一句,我是 Linux 的新手,还在学习它。

linux virtual-machine
  • 1 个回答
  • 459 Views
Martin Hope
Just a learner
Asked: 2019-08-23 03:17:50 +0800 CST

yum list updates 和 yum list obsoletes 有什么区别?

  • 1

该文件指出:

百胜清单已过时

列出系统上安装的软件包,这些软件包已被配置文件中列出的任何 yum 存储库中的软件包淘汰。

百胜列表更新

列出 yum 存储库中可用更新的所有软件包。

据我了解,如果一个包有可用的更新,它就是过时的,对吧?那么它们之间有什么区别呢?

yum software-updates
  • 1 个回答
  • 2065 Views
Martin Hope
Just a learner
Asked: 2019-08-21 12:56:54 +0800 CST

Linux 服务器上没有安装 GUI 时如何切换到虚拟终端?

  • 0

我试图了解终端、控制台、tty、虚拟终端、终端仿真器和这类东西。下面是我的环境的拓扑。有一台 Linux 服务器和一台 Windows 10 PC。我putty在 PC 上使用并连接到 Linux 服务器。在这种情况下,似乎ctrl + alt + f1~6无法将我带到其他虚拟终端。我知道Linux服务器是否安装了GUI,ctrl + alt + f1~6当我直接连接到服务器时我可以按(例如,我插入了键盘和显示器)。我的问题是:

  • 我可以在拓扑中使用多个虚拟终端吗?
  • 如果 Linux 服务器安装了 GUI(如 Gnome),我可以在同一拓扑中使用多个虚拟终端(通过 SSH 连接)吗?
  • 在这个拓扑中,是putty一个终端吗?控制台?还是终端模拟器?

我实际上已经阅读了不同书籍中的几篇文章和相关部分。似乎不同的人介绍这些概念有点不同,我仍然感到困惑。IMO,这是我 Linux 学习之旅中最难的部分。

+---------------------+
|                     |
|                     |
|     Linux Server    |
| (No GUI installed)  |
|                     |
+-----------+---------+
            ^
            |
            | SSH
            |
 +----------+--------+
 |          |        |
 |      +---+---+    |
 |      | Putty |    |
 |      +-------+    |
 |                   |
 |    Windows 10 PC  |
 |                   |
 +-------------------+
terminal tty
  • 2 个回答
  • 2079 Views
Martin Hope
Just a learner
Asked: 2019-08-17 05:51:52 +0800 CST

文件夹拥有suid权限是什么意思?[复制]

  • 3
这个问题在这里已经有了答案:
SUID 对 Linux 目录没有影响 1 个回答
3年前关闭。

我知道文件拥有 suid 权限意味着什么。这意味着当其他用户对其具有执行权限时,他们将作为文件的所有者执行。但是当一个文件夹具有 suid 权限时,这意味着什么?我做了一些测试,该文件夹似乎没有什么特别之处。任何人都可以帮忙解释一下吗?谢谢。

我正在使用 Oracle Linux 7.6。

root:[~]# cat /etc/*release*
Oracle Linux Server release 7.6
NAME="Oracle Linux Server"
VERSION="7.6"
ID="ol"
VARIANT="Server"
VARIANT_ID="server"
VERSION_ID="7.6"
PRETTY_NAME="Oracle Linux Server 7.6"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:oracle:linux:7:6:server"
HOME_URL="https://linux.oracle.com/"
BUG_REPORT_URL="https://bugzilla.oracle.com/"

ORACLE_BUGZILLA_PRODUCT="Oracle Linux 7"
ORACLE_BUGZILLA_PRODUCT_VERSION=7.6
ORACLE_SUPPORT_PRODUCT="Oracle Linux"
ORACLE_SUPPORT_PRODUCT_VERSION=7.6
Red Hat Enterprise Linux Server release 7.6 (Maipo)
Oracle Linux Server release 7.6
cpe:/o:oracle:linux:7:6:server
root:[~]#

以下是我在新安装的服务器上的测试。

root:[~]# pwd
/root
root:[~]# ls -lad /root
dr-xr-x---. 9 root root 4096 Aug 16 22:07 /root
root:[~]# mkdir test
root:[~]# ls -lad test
drwxr-xr-x. 2 root root 4096 Aug 16 22:07 test
root:[~]#
root:[~]# useradd a
root:[~]# passwd a
Changing password for user a.
New password:
BAD PASSWORD: The password is a palindrome
Retype new password:
passwd: all authentication tokens updated successfully.
root:[~]# chmod u+s test
root:[~]#
root:[~]# su - a
[a@localhost ~]$ cd /root/test
-bash: cd: /root/test: Permission denied
[a@localhost ~]$ cd /root
-bash: cd: /root: Permission denied
[a@localhost ~]$ logout
root:[~]#
root:[~]# ls -lad /root
dr-xr-x---. 10 root root 4096 Aug 16 22:07 /root
root:[~]# chmod o+x /root
root:[~]#
root:[~]# su - a
Last login: Fri Aug 16 22:08:54 CST 2019 on pts/0
[a@localhost ~]$ cd /root/test
[a@localhost test]$
[a@localhost test]$ pwd
/root/test
[a@localhost test]$ ls -la .
total 8
drwsr-xr-x.  2 root root 4096 Aug 16 22:07 .
dr-xr-x--x. 10 root root 4096 Aug 16 22:07 ..
[a@localhost test]$ touch file1
touch: cannot touch ‘file1’: Permission denied
[a@localhost test]$ logout
root:[~]#
root:[~]# chmod o+w test/
root:[~]#
root:[~]# su - a
Last login: Fri Aug 16 22:09:31 CST 2019 on pts/0
[a@localhost ~]$
[a@localhost ~]$ cd /root/test
[a@localhost test]$ touch file1
[a@localhost test]$ ls -la
total 8
drwsr-xrwx.  2 root root 4096 Aug 16 22:11 .
dr-xr-x--x. 10 root root 4096 Aug 16 22:07 ..
-rw-rw-r--.  1 a    a       0 Aug 16 22:11 file1
[a@localhost test]$ mkdir folder1
[a@localhost test]$ ls -la
total 12
drwsr-xrwx.  3 root root 4096 Aug 16 22:11 .
dr-xr-x--x. 10 root root 4096 Aug 16 22:07 ..
-rw-rw-r--.  1 a    a       0 Aug 16 22:11 file1
drwxrwxr-x.  2 a    a    4096 Aug 16 22:11 folder1
[a@localhost test]$

如您所见,用户a创建的文件和文件夹似乎/root/test没有继承它的所有者和组。所有者和组是a和不是root。我的测试有问题吗?我是 Linux 新手。

permissions suid
  • 2 个回答
  • 583 Views
Martin Hope
Just a learner
Asked: 2019-08-13 08:03:46 +0800 CST

为什么“dir”的结果没有突出显示?

  • -1

我在 Oracle Linux 上。

[root@ol76 systemd]# cat /etc/*release*
Oracle Linux Server release 7.6
NAME="Oracle Linux Server"
VERSION="7.6"
ID="ol"
VARIANT="Server"
VARIANT_ID="server"
VERSION_ID="7.6"
PRETTY_NAME="Oracle Linux Server 7.6"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:oracle:linux:7:6:server"
HOME_URL="https://linux.oracle.com/"
BUG_REPORT_URL="https://bugzilla.oracle.com/"

ORACLE_BUGZILLA_PRODUCT="Oracle Linux 7"
ORACLE_BUGZILLA_PRODUCT_VERSION=7.6
ORACLE_SUPPORT_PRODUCT="Oracle Linux"
ORACLE_SUPPORT_PRODUCT_VERSION=7.6
Red Hat Enterprise Linux Server release 7.6 (Maipo)
Oracle Linux Server release 7.6
cpe:/o:oracle:linux:7:6:server
[root@ol76 systemd]#

为什么ls有突出显示的结果,但dir没有?

在此处输入图像描述

linux bash
  • 1 个回答
  • 41 Views
Martin Hope
Just a learner
Asked: 2019-08-11 03:33:21 +0800 CST

ifdown 和“ip link set .. .down”有什么区别?

  • 1

我在下面做了一些测试。似乎ifdown ens32没有关闭界面。并且ip link仍然显示UP。只会ip link set ens32 down关闭接口。那么这里有什么问题呢?为什么ifdown无法关闭接口?

root:[~]# cat /etc/*release*
Oracle Linux Server release 7.6
NAME="Oracle Linux Server"
VERSION="7.6"
ID="ol"
VARIANT="Server"
VARIANT_ID="server"
VERSION_ID="7.6"
PRETTY_NAME="Oracle Linux Server 7.6"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:oracle:linux:7:6:server"
HOME_URL="https://linux.oracle.com/"
BUG_REPORT_URL="https://bugzilla.oracle.com/"

ORACLE_BUGZILLA_PRODUCT="Oracle Linux 7"
ORACLE_BUGZILLA_PRODUCT_VERSION=7.6
ORACLE_SUPPORT_PRODUCT="Oracle Linux"
ORACLE_SUPPORT_PRODUCT_VERSION=7.6
Red Hat Enterprise Linux Server release 7.6 (Maipo)
Oracle Linux Server release 7.6
cpe:/o:oracle:linux:7:6:server
root:[~]# 
root:[~]# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 00:50:56:31:a8:12 brd ff:ff:ff:ff:ff:ff
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default qlen 1000
    link/ether 52:54:00:33:cf:a3 brd ff:ff:ff:ff:ff:ff
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN mode DEFAULT group default qlen 1000
    link/ether 52:54:00:33:cf:a3 brd ff:ff:ff:ff:ff:ff
root:[~]# ifdown ens32
Device 'ens32' successfully disconnected.
root:[~]# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 00:50:56:31:a8:12 brd ff:ff:ff:ff:ff:ff
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default qlen 1000
    link/ether 52:54:00:33:cf:a3 brd ff:ff:ff:ff:ff:ff
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN mode DEFAULT group default qlen 1000
    link/ether 52:54:00:33:cf:a3 brd ff:ff:ff:ff:ff:ff
root:[~]# ip link set ens32 down
root:[~]# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens32: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
    link/ether 00:50:56:31:a8:12 brd ff:ff:ff:ff:ff:ff
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default qlen 1000
    link/ether 52:54:00:33:cf:a3 brd ff:ff:ff:ff:ff:ff
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN mode DEFAULT group default qlen 1000
    link/ether 52:54:00:33:cf:a3 brd ff:ff:ff:ff:ff:ff
root:[~]# 
linux rhel
  • 2 个回答
  • 7003 Views
Martin Hope
Just a learner
Asked: 2019-05-07 10:25:46 +0800 CST

wget 从文件列表中下载文件,如何为每个下载的文件指定名称?

  • 5

当下载单个文件时,我们可以使用 wget 的-O选项来指定文件名。当我使用wget -i filelist.txt(filelist.txt 包含我要下载的 URL 列表)下载文件中的 Urls 时,如何构造 filelist.txt 以便在下载每个文件时对其进行重命名?

对于 Ex,如果 filelist.txt 包含以下内容:

--output-document=1.jpg http://images2.example.com/image1.jpg
--output-document=2.jpg http://images2.example.com/image2.jpg

是否可以下载image1.jpg并另存为1.jpg, image2.jpgas 2.jpg?


编辑

我知道我可以使用简单的脚本或文本操作技术来创建多个 wget 命令,每个命令都下载一个 Url 并写入输出文件。我还没有测试过,但这对我来说似乎更慢,我想知道是否有任何方法可以使用单个 wget 进程下载所有文件。

filenames rename
  • 2 个回答
  • 5869 Views
Martin Hope
Just a learner
Asked: 2019-05-06 12:00:25 +0800 CST

如何使用awk根据另一个文件的内容从一个文件中提取数据?

  • 4

我有两个文件。一个文件包含结构化数据,并且是一个样本。

article 1 title
article 1 body line 1
article 1 body line 2
+++
article 2 title
article 2 body line 1
article 2 body line 2
article 2 body line 3
+++
article 3 title
article 3 body line 1
article 3 body line 2
+++
article 4 title
article 4 body line 1
article 4 body line 2
article 4 body line 3

如您所见,+++是记录的分隔符。对于每条记录,第一行是标题,所有其他行都是该记录的内容。另一个文件是带有标题列表的简单文本文件。例如:

article 1 title
article 3 title
article 4 title

我想要的是第二个文件中列出的标题记录。所以对于前面提到的例子,预期的结果是:

article 1 title
article 1 body line 1
article 1 body line 2
+++
article 3 title
article 3 body line 1
article 3 body line 2
+++
article 4 title
article 4 body line 1
article 4 body line 2
article 4 body line 3

我认为awk可能可以解决我的问题,但我不知道如何。

我试过的是这样的:

awk 'BEGIN{RS="(\r?\n)?\+{3}(\r?\n)?"; FS="\r?\n"; ORS="+++"} NR==FNR{a[$0];next} ...' title_list.txt data.txt

我的问题是这RS两个文件的文件应该不同,我不知道如何使它工作。

awk text-processing
  • 3 个回答
  • 1414 Views
Martin Hope
Just a learner
Asked: 2019-01-08 20:00:35 +0800 CST

Gnu sed,打印时p命令会附加换行符吗?

  • 4
root@u1804:~# sed --version
sed (GNU sed) 4.5
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Jay Fenlason, Tom Lord, Ken Pizzini,
and Paolo Bonzini.
GNU sed home page: <https://www.gnu.org/software/sed/>.
General help using GNU software: <https://www.gnu.org/gethelp/>.
E-mail bug reports to: <[email protected]>.
root@u1804:~#

我是 sed 的新手,我根据我的理解在 sed 的工作流程下创建了(如果您发现任何错误,请纠正我)。

在此处输入图像描述

因此,模式空间的默认自动打印似乎总是在末尾包含一个换行符。我的问题是,是否也会p包含换行符?我有以下例子。

root@u1804:~# seq 3 | sed -rn 'p'
1
2
3
root@u1804:

这里每个数字末尾的换行符是由 sed 自己添加的(参见图表“将换行符添加回模式空间”)。所以它似乎p不会附加换行符。但是,请参见下面的示例。

root@u1804:~# seq 3 | sed -rn 'x;p;x;p'

1

2

3
root@u1804:~#

这里x用保持空间交换模式空间,这将导致一个空的模式空间。现在p应用于模式空间(其中没有任何内容)应该什么都不打印。但根据结果,这里似乎p打印了一个换行符。对我来说,这似乎是不一致的行为。谁能解释一下?

sed
  • 3 个回答
  • 1886 Views
Martin Hope
Just a learner
Asked: 2019-01-07 15:34:08 +0800 CST

如何在 Gnu sed 中使用 a 和 i 命令使用 \n 添加换行符?

  • 2

在下面的示例中,我可以使用文字换行符在 之前和之后添加一个空行3。可以\n代替使用吗?我正在使用 Gnu sed 4.5。

root@u1804:~# seq 5 | sed -r -e '/3/{i\
> ' -e 'a\
> ' -e '}'
1
2

3

4
5
root@u1804:~#
sed
  • 1 个回答
  • 115 Views
Martin Hope
Just a learner
Asked: 2019-01-07 14:56:52 +0800 CST

不带 -n 运行 sed,d 命令会跳过默认的自动打印模式空间内容吗?

  • 2

sed国家文件d将:

删除模式空间;立即开始下一个循环。

如果sed在没有 的情况下运行-n,会在命令sed后自动打印模式空间吗?d我知道在这种情况下,模式空间是空的。所以打印与否没有区别。但我只是好奇。

我有这个例子:

root@u1804:~# seq 10 | sed -r '/5/d'
1
2
3
4
6
7
8
9
10
root@u1804:~#

如您所见,没有5. 是因为d直接执行到下一个循环还是自动打印模式空间打印一个空字符串?

sed
  • 1 个回答
  • 272 Views
Martin Hope
Just a learner
Asked: 2019-01-07 05:13:04 +0800 CST

如何使用sed的w命令写入文件?

  • 2

下面是我的测试。如何修复错误?

ubuntu@u1804:~# sed --version
sed (GNU sed) 4.5
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Jay Fenlason, Tom Lord, Ken Pizzini,
and Paolo Bonzini.
GNU sed home page: <https://www.gnu.org/software/sed/>.
General help using GNU software: <https://www.gnu.org/gethelp/>.
E-mail bug reports to: <[email protected]>.
ubuntu@u1804:~#
ubuntu@u1804:~# cat test
11
aa
bb
cc
edde
xx
aa
bb
cc
edde
22
ubuntu@u1804:~# sed -r '/^[a-z]/{s/^.*$/(&)/; w result}' test
sed: -e expression #1, char 0: unmatched `{'
ubuntu@u1804:~#
ubuntu@u1804:~# sed -r '/^[a-z]/{s/^.*$/(&)/; p}' test
11
(aa)
(aa)
(bb)
(bb)
(cc)
(cc)
(edde)
(edde)
(xx)
(xx)
(aa)
(aa)
(bb)
(bb)
(cc)
(cc)
(edde)
(edde)
22
ubuntu@u1804:~#
sed
  • 1 个回答
  • 2456 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