小编roa*_*ima的帖子

如何防止空闲会话退出

我正在一个新的 CentOS 7 虚拟机上远程工作。我有几个打开的会话运行的屏幕。我发现如果我让其中一个会话闲置一段时间,然后尝试回到它,它就会消失。会话中没有什么特别的事情——ssh 连接到其他系统、mysqlclient、top 等——这些都保持正常。但是如果我只是在 bash shell 提示符下离开一个会话,它就会消失 - 我只看了一个,大约需要 10-11 分钟。

我以前从未发生过这种情况。知道发生了什么吗?

新讯息。应该不是屏幕。我打开了一个新的 ssh 会话到这个系统并让它闲置。它也关闭了我。但这一次我收到了一条消息:

timed out waiting for input: auto-logout
Run Code Online (Sandbox Code Playgroud)

转到谷歌......可能是一些愚蠢的shell设置?

bash

11
推荐指数
1
解决办法
7968
查看次数

为什么是`sed expr1 | sed expr2` 与 `sed -e expr1 -e expr2` 不同

我正在拆分输出,id以提供用户所属组的更易读的逐行列表:

id roaima | sed 's/,/\n\t/g'
uid=1001(roaima) gid=1001(roaima) groups=1001(roaima)
    24(cdrom)
    25(floppy)
    ...
    822413650 (international (uk) location)
Run Code Online (Sandbox Code Playgroud)

我想将组号与其括号内的名称分开,所以我扩展了这样的表达式

id roaima | sed -e 's/,/\n\t/g' -e '2,$s/(/ (/'
Run Code Online (Sandbox Code Playgroud)

然而,这并不像我最初预期的那样。第二个表达似乎没有效果。

相反,为了获得我想要的结果,我需要运行两个单独的sed命令,如下所示:

id roaima | sed -e 's/,/\n\t/g' | sed '2,$s/(/ (/'
uid=1001(roaima) gid=1001(roaima) groups=1001(roaima)
    24 (cdrom)
    25 (floppy)
    ...
    822413650 (international (uk) location)
Run Code Online (Sandbox Code Playgroud)

为什么我需要sed在一个管道中使用两个命令而不是一个带有多个指令的命令?或者如果我可以用一个来做到这一点sed,我会怎么做?

我特别希望在每个项目的 UID/GID 值与其括号名称之间有一个空格(包括第一行的 UID 和 GID),但需要注意的是,在我的真实数据中,我可以有组在他们的名字中包含括号,我不希望名字本身被破坏。

sed group

10
推荐指数
2
解决办法
548
查看次数

Grep 匹配和提取

我有一个包含行的文件

proto=tcp/http  sent=144        rcvd=52 spkt=3 
proto=tcp/https  sent=145        rcvd=52 spkt=3
proto=udp/dns  sent=144        rcvd=52 spkt=3
Run Code Online (Sandbox Code Playgroud)

我需要提取 proto 的值,即tcp/http, tcp/https, udp/dns

到目前为止,我已经尝试过这个,grep -o 'proto=[^/]*/'但只能将值提取为proto=tcp/.

grep awk

10
推荐指数
4
解决办法
2485
查看次数

kworker 线程 kacpid_notify/kacpid 占用 60-70% 的 CPU

我正在运行 Linux Mint,版本 19 Tara。

我的电池寿命现在非常糟糕,而且我的风扇一直开着,因为我的计算机在这个 kworker 线程上的 CPU 使用率始终为 70%。这真的开始让我烦恼了。我top一开机就运行,在我打开一个程序(终端除外)之前,这个进程就已经占用了 70% 的 CPU。

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
    5 root      20   0       0      0      0 I  66.1   0.0   1:27.86 kworker/0:0-kac
Run Code Online (Sandbox Code Playgroud)

当我运行时,它会将 kworker 线程识别为在被调用和htop之间来回切换。kacpi_notifykacipid

我尝试编辑 grub,acpi=off但随后我的系统启动到黑屏,并带有闪烁的下划线,仅此而已。不会启动。

我升级了内核,所以现在运行的是 5.3.0-51-generic。到目前为止,我的研究让我认为我可能需要更新我的 BIOS,但我的计算机制造商只提供 .exe 形式的 BIOS 更新。我已经下载了exe,但我不知道从这里去哪里。

有人可以帮我吗?

kernel bios linux-mint cpu-usage

10
推荐指数
2
解决办法
8884
查看次数

如何复制目录结构但忽略符号链接?

我有一个软件项目,它对配置文件使用特定的目录结构。符号链接用于指向当前使用的配置文件。我正在为 CentOS 7 制作自定义安装程序脚本。

我使用另一个脚本来捆绑目录结构和安装程序脚本。捆绑脚本使用 rsync 复制目录结构,并保留所有默认符号链接。它还排除了隐藏的 svn 文件夹。

rsync -a --exclude=".*" [sourceFolder] [bundleFolder]
Run Code Online (Sandbox Code Playgroud)

安装脚本使用 cp 将目录结构(默认符号链接完整)安装到用户指定的位置。

cp -rP [bundleFolder] [installLocation]
Run Code Online (Sandbox Code Playgroud)

这一切都很好。

但是,我还需要安装程序脚本才能更新现有安装。这样做的问题是我需要能够更新配置文件而不改变用户拥有的符号链接。

有没有办法复制整个目录结构(所有文件夹和子文件夹)但忽略任何符号链接?我试图避免使用 find 来解析 bash 脚本中的整个结构,只是为了忽略符号链接。我认为这将是 cp 或 rsync 可以选择的常见任务。我一直没能找到一个。

shell bash shell-script

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

awk "日期" | getline var 缓存它的值 - 但只是有时

作为更大awk脚本的一部分,我需要将任意日期字符串转换为自纪元以来的秒数。这不能作为awk函数使用,所以我想我可以恢复调用date每一行输入。(事后看来,我本可以使用perl,但让我们暂时搁置这个想法。)

在看到一些意想不到的结果后,我将问题简化为这个(bash和 GNU awk

for f in {1..5}; do echo $f; sleep 2; done | awk '{ "date" | getline x; printf ">>%s<<\n", x }'
Run Code Online (Sandbox Code Playgroud)

所有相同的结果,即使我确认awk循环确实每两秒只运行一次

>>29 Jun 2020 10:38:24<<
>>29 Jun 2020 10:38:24<<
>>29 Jun 2020 10:38:24<<
>>29 Jun 2020 10:38:24<<
>>29 Jun 2020 10:38:24<<
Run Code Online (Sandbox Code Playgroud)

也许getline缓存。所以我试过这个

for f in {1..5}; do echo $f; sleep 2; done | awk '{ "date; : " NR | …
Run Code Online (Sandbox Code Playgroud)

awk

9
推荐指数
1
解决办法
317
查看次数

无法使用非整数时间选项调用 watch 命令

我想w周期性地启动命令,根据man watch最小可能的时间间隔是0.1。

我试过:

watch -n1 w        (works)
watch -n1.5 w      (does not work)
watch -n0.1 w      (does not work)
Run Code Online (Sandbox Code Playgroud)

当我尝试watch使用 n 选项作为非整数启动命令时,我收到错误消息:

watch: failed to parse argument: '0.1'
Run Code Online (Sandbox Code Playgroud)

command-line watch w

8
推荐指数
1
解决办法
2226
查看次数

rsync 命令是增量复制还是覆盖文件?

rsync 命令用于将文件夹数据同步到另一个文件夹。我想知道此命令是否覆盖整个文件并同步或仅复制新文件或更改的文件。是否提示是否在目标文件夹中找到类似名称的文件?

具体来说,我正在使用rsync -rvh /usr/local/aryan/ /usr/local/aryan并将所有文件从本地机器覆盖到远程机器。我手动将 10 个文件复制到远程位置,然后使用上述rsync命令同步 20 个文件,包括前 10 个文件。之后rsync -rvh command,我可以看到远程位置的所有文件都在同一时间。这意味着所有文件都被覆盖了。

rsync

8
推荐指数
2
解决办法
3万
查看次数

如何通过 Bash 脚本更改*您的* Linux 密码

通过 Bash 脚本更改其他用户的密码非常简单- 只需执行echo newpw | sudo passwd username“bam”操作,就完成了。但如果您运行echo newpw | passwd username它,它就不起作用,因为它会在让您输入新密码之前提示您输入当前密码。

如何通过 Bash 更改密码

bash passwd

8
推荐指数
2
解决办法
3万
查看次数

如何创建具有特定值的二进制文件?

我需要创建一个只填充11111111.

我只知道如何创建零填充二进制文件

dd if=/dev/zero bs=18520 count=1
Run Code Online (Sandbox Code Playgroud)

你能告诉我应该使用管道中的什么命令来填充垃圾箱1吗?awk在这种情况下我该如何使用?

dd shell-script binary

8
推荐指数
2
解决办法
1690
查看次数

标签 统计

bash ×3

awk ×2

shell-script ×2

binary ×1

bios ×1

command-line ×1

cpu-usage ×1

dd ×1

grep ×1

group ×1

kernel ×1

linux-mint ×1

passwd ×1

rsync ×1

sed ×1

shell ×1

w ×1

watch ×1