Unix & Linux

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

3
如何不重新启动(kpartx)使用新的fdisk表?
当我运行fdisk并更改分区的大小时,fdisk在其输出末尾说: The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) 我想这样做而不必重新引导(然后编写一个脚本来执行此操作)如何使用kpartx正确执行此操作?我试过了: kpartx -f -v /dev/mmcblk0 哪个输出: mmcblk0p1 : 0 102400 /dev/mmcblk0 2048 mmcblk0p2 : 0 7657472 /dev/mmcblk0 104448 和: kpartx -a -v /dev/mmcblk0 输出: device-mapper: reload ioctl on mmcblk0p1 failed: Invalid argument …
11 debian  fdisk 

7
$ 0是否总是包含脚本的路径?
我想grep当前脚本,以便可以从顶部的注释部分打印出帮助和版本信息。 我在想这样的事情: grep '^#h ' -- "$0" | sed -e 's/#h //' 但是后来我想知道,如果脚本位于PATH中的目录中并且在未显式指定目录的情况下调用该脚本,将会发生什么情况。 我搜索了有关特殊变量的说明,并找到了以下说明$0: 当前shell或程序的名称 当前脚本的文件名 脚本本身的名称 运行命令 $0如果没有该脚本而调用脚本,则这些命令都不能清楚表明目录的值是否包含该目录。最后一个实际上向我暗示不会。 在我的系统上测试(Bash 4.1) 我在/ usr / local / bin 中用一行创建了一个名为scriptname的可执行文件,echo $0并从不同位置调用了它。 这些是我的结果: > cd /usr/local/bin/test > ../scriptname ../scriptname > cd /usr/local/bin > ./scriptname ./scriptname > cd /usr/local > bin/scriptname bin/scriptname > cd …

1
在bash中完成POSIX中的间接变量扩展?
有可能吗,或者有一些不错的技巧可以像在Bash中一样在POSIX中进行间接变量扩展? 对于上下文,我正在尝试执行以下操作: for key in ${!map_*} do # do something done 编辑:澄清一下,我想访问以开头的shell变量map_。

4
Shell脚本中的关联数组
我看到了在Shell脚本中实现关联数组的技巧。例如print array["apples"],可以编写为echo \$array$keykey = apples。 但是,没有提到如何生成用于遍历数组的密钥。我能想到的唯一方法是将键存储在以空格分隔的变量中,以便可以使用for循环遍历数组。 因此,还有其他方法可以存储密钥以供以后使用吗?


3
如何在ssh中提供登录延迟
我想在通过ssh登录时提供登录延迟。我尝试了几种方法来完成登录,但找不到所需的结果。 我尝试了给定链接提供的步骤。 http://hostingfu.com/article/ssh-dictionary-attack-prevention-with-iptables iptables -N SSH_CHECK iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j SSH_CHECK iptables -A SSH_CHECK -m recent --set --name SSH iptables -A SSH_CHECK -m recent --update --seconds 60 --hitcount 4 --name SSH -j DROP 我的机器上未安装pam模块,因此无法进行与pam文件相关的任何修改 因此,有谁能让我建议其他方法来做同样的事情? 我在嵌入式平台上运行着裸露的Linux内核。
11 linux  networking  ssh  sshd 

3
在哪里放置系统cronjobs?
如果我需要在系统级别运行的cronjob(即不特定于某个用户),您如何建议我创建它? crontab -e以root身份运行 附加到 /etc/crontab 在以下位置创建定义cronjob的文件 /etc/cron.d/ 创建一个定义cronjob的文件/etc/cron.*ly/(但仅在这样的时间间隔符合我的需要时) 我最担心的是:这些解决方案中的哪一个可能会被系统更新覆盖? 另外我猜想如果工作时间长,我应该把它放在一个单独的脚本文件中,例如在/root/bin/。你同意吗?
11 cron  upgrade 

3
在管道中较早获取命令的PID
我正在编写一个bash脚本,用于inotifywait监视目录并在检测到更改时启动操作。就像是: inotifywait -m ... | while read f; do something; done 由于inotifywait不会自行终止,因此该脚本不会停止。 所以我的计划是获取inotifywait进程的PID,将其保存到文件中,然后让另一个进程将其杀死,例如: inotifywait -m ... | { echo ??PID?? > pid-file; while ... } 但我不知道如何获取PID。有没有简单的方法可以做到这一点?另一种方法是将shell脚本的PID保存$$到文件中并杀死整个shell脚本,但是我想在while循环后进行一些清理。 我已经尝试过使用coproc,但我认为它会起作用,但似乎比所需的更为复杂。
11 bash  pipe  pid 


3
有没有一种方法可以确定应该加载哪些软件包或库来支持可执行文件?
我有一个可执行文件,我想在无法编译的计算机上安装该可执行文件,该可执行文件不是作为程序包构建的,我想下载运行它们所需的库。 以下是ldd在其上运行的输出的一部分 libpango-1.0.so.0 => /usr/lib/i386-linux-gnu/libpango-1.0.so.0 (0xb702f000) libcairo.so.2 => /usr/lib/i386-linux-gnu/libcairo.so.2 (0xb6f64000) libatk-1.0.so.0 => /usr/lib/i386-linux-gnu/libatk-1.0.so.0 (0xb6f43000) libsqlite3.so.0 => /usr/lib/i386-linux-gnu/libsqlite3.so.0 (0xb6e9e000) libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb6cf4000) /lib/ld-linux.so.2 (0xb786e000) libxcb.so.1 => /usr/lib/i386-linux-gnu/libxcb.so.1 (0xb6cd3000) libgio-2.0.so.0 => /usr/lib/i386-linux-gnu/libgio-2.0.so.0 (0xb6b7c000) libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb6b4f000) 是否有一个工具可以使用此信息来选择应该下载哪些软件包,或者最好仅提取列出的库及其依赖项,以最大程度地减少磁盘使用量?系统正在无头虚拟机上运行,​​程序将通过VNC显示。 尽管我怀疑功能齐全的图形桌面将提供所需的大多数库,但我只想下载所需的库,它们的依赖项以及足够的X Windows软件包来支持它。

1
将键序列绑定到Escape,zsh
如何在zsh中映射jj到Esc? 我正在尝试重新创建我在vim中设置的映射的键jj映射,ESC以便每当我按两次时j,它将an发送<Esc>到vim ,这使我可以更方便地进入普通模式。 我已经尝试过了bindkey 'jj' ^[,并且将要尝试bindkey 'jj' ^[[,但是我怀疑它是否会起作用。我还检查了正常模式下zsh提供的命令列表,但没有看到包含normal或的任何内容escape。 注意我文件中 的^[字符~/.zshrc是实际的硬编码转义符;不只是人物^和[。


3
使用grep,如何匹配一个模式并反转匹配另一个模式?
使用grep,我想选择所有与一个模式匹配但与另一个模式不匹配的行。我希望能够使用的单次调用,grep以便可以使用--after-context选项(或--before-context,或--context)。 -v在此处不可行,因为它会否定我grep使用该-e选项传递给所有模式的方式。 例 我想查找匹配以下内容的一行needle,而忽略匹配的ignore me行。 这是我的输入文件: one needle ignore me two three four needle five 我想要的输出是: four needle five 如您所见,这种幼稚的解决方案不起作用: $ cat file | grep --after-context=1 needle | grep -v 'ignore me' two --- four needle five
11 grep 

1
如何在Arch Linux中调试重复的Wi-Fi断开连接?
经过很长时间的尝试以建立无线连接后,我现在能够获得一个非常粗略的连接(例如,每隔几分钟就会有几秒钟的实际Internet访问时间)。wpa_supplicant -d -i wlp0s29f7u5 -c wifi.conf -Dwext在一个VT和while ! yes | pacman -Syu; do :; done另一个VT中运行,几分钟后仍未完成,但是偶尔可以下载一些文件。 iw dev wlp0s29f7u5 link Arch机器上的报告信号强度约为-40 dB,比相邻的Ubuntu笔记本电脑的-70 dB差很多。 连接输出: # wpa_supplicant -d -i wlp0s29f7u5 -c wifi.conf -Dwext wpa_supplicant v2.0 Successfully initialized wpa_supplicant Initializing interface 'wlp0s29f7u5' conf 'wifi.conf' driver 'wext' ctrl_interface 'N/A' bridge 'N/A' Configuration file 'wifi.conf' …
11 arch-linux  wifi 

3
睡到下次特定时间
我需要一系列命令或一个可以休眠的命令,直到下一次出现“ 4:00”之类的特定时间为止。 我该怎么办? 该at命令或cronjob是不可选项,因为我一定不要离开当前所在的脚本。 我正在谈论的特定情况是在屏幕上运行的脚本。我不要停止脚本本身来执行脚本,这一点非常重要,因为在脚本的某些地方需要存储许多重要的变量。脚本不总是应该定期执行。它只需要在特定时间执行。 如果脚本必须创建任何文件或任何其他任务(例如cronjobs或其他屏幕),那将是非常有益的。这只是设计问题。 我只是有一个可怕的主意: difference=$(($(date -d "4:00" +%s) - $(date +%s))) if [ $difference -lt 0 ] then sleep $((86400 + difference)) else sleep $difference fi 您有更好的主意吗? 如果需要,将添加更多信息!
11 bash  date  time  sleep 

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.