Unix & Linux

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

1
尝试编写可继续远程测试服务器的shell脚本,但注销时该脚本始终落在else语句中
尝试在此处编写一个shell脚本,该脚本不断测试我的服务器,并在出现故障时向我发送电子邮件。 问题是,当我从ssh连接注销时,尽管&在命令末尾(如)运行ssh连接,它./stest01.sh &仍自动落入else并保持不间断地向我发送邮件,直到我再次登录并杀死它。 #!/bin/bash while true; do date > sdown.txt ; cp /dev/null pingop.txt ; ping -i 1 -c 1 -W 1 myserver.net > pingop.txt & sleep 1 ; if grep "64 bytes" pingop.txt ; then : else mutt -s "Server Down!" myemail@address.com < sdown.txt ; sleep 10 ; fi …



1
最繁忙的文件列表
我正在寻找一种工具,该工具将列出按文件中活动量排序的打开文件。因此lsof不会做这项工作(除非我忽略了一种使用方法lsof)。理想情况下,该工具应类似于top,并且应该能够在特定活动之间进行排序:读,写,字节,每秒查找。最好在RHEL / CentOS / EPEL中容易获得。 是否存在这样的工具?

5
如何以事务方式复制文件?
我想将文件从A复制到B,这可能在不同的文件系统上。 还有一些其他要求: 副本是全部或全部,崩溃时不保留任何部分或损坏的文件B; 不要覆盖现有文件B; 不要与并发执行同一命令竞争,最多只能成功。 我认为这很接近: cp A B.part && \ ln B B.part && \ rm B.part 但是3.如果B.part存在(即使带有-n标志),则cp不会违反cp违反。随后,如果其他进程“赢得” cp并且链接到位的文件不完整,则可能1.失败。B.part也可能是不相关的文件,但在这种情况下如果不尝试其他隐藏名称,我很乐意失败。 我认为bash noclobber会有所帮助,这样是否可以充分发挥作用?有没有没有bash版本要求的方法? #!/usr/bin/env bash set -o noclobber cat A > B.part && \ ln B.part B && \ rm B.part 跟进,我知道某些文件系统无论如何都会失败(NFS)。有没有办法检测这种文件系统? 其他一些相关但不完全相同的问题: 跨文件系统的近似原子移动? 我的FS上的MV是原子的吗? 有没有办法将文件和目录从tempf原子地移动到eMMC上的ext4分区 https://rcrowley.org/2010/01/06/things-unix-can-do-atomically.html
9 linux  bash  cp 

4
循环性能与扩展性能
需要以下比较的专家建议: 使用循环的代码段: for file in `cat large_file_list` do gzip -d $file done 使用简单扩展的代码段: gzip -d `cat large_file_list` 哪一个会更快?必须操纵大数据集。

1
是否可以(7天)安排硬盘驱动器的睡眠时间?
我正在寻找一种安排连接到Linux(Debian 9)的外部硬盘进入休眠状态(停止旋转)的方式。 对此进行介绍:我有一个Linux盒子,可以作为多媒体服务器运行。如果调用以获取外部硬盘驱动器上的内容,则硬盘驱动器唤醒并开始旋转通常需要15-30秒,这会导致a)令人沮丧,b)有时导致多媒体服务器超时。我可以将硬盘驱动器设置为24/7全天候无休止地旋转,但这似乎很浪费,因为在大多数情况下,我在家时仅使用多媒体服务器。 我是否可以使用任何软件工具或命令来设置硬盘驱动器何时旋转的每周计划-例如,周一至周五:在下午5点至晚上11点之间纺纱;周六至周日:在下午3点至晚上11点之间纺纱。系统计时器

1
不知不觉中在终端上运行了无限循环
我将以下代码从某些随机源复制到终端并运行: while sleep 1; do tput sc; tput cup 0 $(($(tput cols)-29)); date; tput rc; done & 该代码将在终端的右上角显示运行时钟。该代码片段运行得很好,并且完全按照我想要的去做,但是现在我只想结束此循环并摆脱时钟。 另外,我需要了解上面的代码。我有个主意,因为我知道tput命令的作用,但是仍然有很多点无法连接。
9 terminal 


6
查找具有给定扩展名的所有文件,这些扩展名的基本名称是父目录的名称
我想递归查找*.pdf目录中~/foo的每个文件,其基本名称与文件的父目录的名称匹配。 例如,假设目录结构~/foo如下所示 foo ├── dir1 │ ├── dir1.pdf │ └── dir1.txt ├── dir2 │ ├── dir2.tex │ └── spam │ └── spam.pdf └── dir3 ├── dir3.pdf └── eggs └── eggs.pdf 运行我想要的命令将返回 ~/foo/dir1/dir1.pdf ~/foo/dir2/spam/spam.pdf ~/foo/dir3/dir3.pdf ~/foo/dir3/eggs/eggs.pdf 是否可以使用find或其他一些核心实用程序?我假设使用-regex选项可以做到这一点,find但是我不确定如何编写正确的模式。
9 find 

1
使用apt等效于rpm -K
在中定义为在“ 最大RPM”中和在“ 最大RPM”中验证存储库的签名apt相当于什么?rpm -K *.rpm-Kman rpm 情况示例: sudo rpm --import https://mirrors.example.com/rpm/RPM-GPG-KEY-release && rpm -K example.rpm
9 debian  rhel  apt  rpm  gpg 

4
awk一次分配给多个变量
我正在尝试从一个字符串中提取两个数值,并使用awk(将它们分配给变量)(gawk这正是我正在使用的)。我想从tmux版本字符串中提取主要和次要版本号到awk变量中,例如: 输入:tmux 2.8; maj == 2和min == 8 输入:tmux 1.9a; maj == 1和min == 9 输入:tmux 2.10; maj == 2和min == 10 假设我的输入来自tmux -Vstdin,我目前有以下内容: tmux -V | awk '{ maj = +gensub(/([0-9]+)\..*/, "\\1", "g", $2); min = +gensub(/.*\.([0-9]+).*/, "\\1", "g", $2); # ...do something with maj and min... }' 这行得通,但是正如许多tmux用户所知道的,if-shell在.tmux.conf文件中使用(我希望在其中使用该东西)很容易导致config文件中的行很长,所以我想知道是否有办法组合这两个变量分配到一个语句中以节省空间...或其他任何方式从输入中收集这两个变量并节省空间。 …
9 awk  gawk 

1
w,who,whoami和id的不同输出
当我运行时,在在线命令行平台上,例如Codecademy上的平台 for cmd in w who whoami id do echo $cmd $cmd echo ========================= echo " " done 我懂了 w 00:52:54 up 8 days, 14:10, 0 users, load average: 3.78, 2.98, 2.69 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT ========================= who ========================= whoami ccuser ========================= id uid=1000(ccuser) gid=1000(ccuser) groups=1000(ccuser) …
9 users  who  w  whoami 

1
awk意外地从字符串中删除了点
我想在文件中添加一列(第二名),.csv并且我希望该列的值是字符串并用引号引起来; 以下命令会添加列,但不带引号: awk -F"," 'BEGIN { OFS = "," } {$2="2.4.0"; print}' test.csv > output.csv 以下方法的确包含了引号,但是由于某种原因,它删除.了值中的最后一个(点) awk -F"," 'BEGIN { OFS = "," } {$2="\""2.4.0"\""; print}' test.csv > output.csv 所以我的值最终是“ 2.40”。 我应该怎么做?
9 awk  csv 

1
在Debian GNU / Hurd中编译源代码与Debian GNU / Linux有何不同?
我试图libnetfilter_conntrack从github 编译源代码,因为它是iptables在编译iptables时要求的,并且其中的任何一个在HURD软件库中都不可用,并且在配置时最终出错libnetfilter_conntrack checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... no checking whether ln -s works... yes configure: error: Linux only, dude! 我的内核是 $ uname -a GNU debian 0.9 GNU-Mach 1.8+git20190109-486/Hurd-0.9 …
9 debian  compiling  c  hurd 

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.