我已经在 Pi(Raspbian)上安装了 node.js 和 pm2。PM2 被配置为通过pm2 startup它创建的初始化脚本启动。有时,当我重新启动时,关机会挂起几分钟:
A stop job is running for LSB: PM2 init script (... / 5min)
Run Code Online (Sandbox Code Playgroud)
每隔一段时间1我假设 PM2 没有正确关闭并挂起整整 5 分钟。
在这个系统上,我确切地知道 PM2 正在管理哪些应用程序,我真的不在乎它们是否正常关闭。
我的问题是:如何将超时从 5 分钟减少到 15 秒左右?这是在哪里配置的?
我在论坛上读到它是/etc/systemd/system.conf中的DefaultTimeoutStopSec关键,所以我尝试将其设置为“15s”,但没有效果。我也在/etc/systemd/user.conf 中尝试了同样的事情,但没有改变。超时仍设置为 5 分钟。
1我确实知道具体是什么触发了这个,但细节并不重要,影响是不可避免的。
我有一个带有几个 ext4 分区的驱动器(SD 卡),但还有一些未分配的空间。该fstrim实用程序只能在文件系统中工作。在我重新发明轮子并编写一个之前,是否有另一种实用程序可以修剪未分配的空间(或者可以修剪明确指定的范围)?
我可以验证控制器当前不知道设备上的大部分未分配空间是否可用,正如我观察到的那样,在这张特定的卡上,读取到修剪过的空间返回 0,但设备的扫描显示留下了大量的垃圾数据。
编辑:我在使用hdparm. 下面的示例丢弃了第一个扇区,但无论我指定的范围如何,我都会看到相同的结果。fstrim设备上没有问题:
root@ubuntu:~# hdparm --please-destroy-my-drive --trim-sector-ranges 0:1 --verbose /dev/mmcblk0
/dev/mmcblk0:
trimming 1 sectors from 1 ranges
outgoing cdb: 85 0d 06 00 01 00 01 00 00 00 00 00 00 40 06 00
outgoing_data:
00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …Run Code Online (Sandbox Code Playgroud) 我正在尝试将 sh 脚本中的变量设置为文件基本名称的最后 3 个字符(基本名称是指没有路径和后缀)。我已经成功地做到了这一点,但纯粹出于好奇,我想知道是否有一个更短的单一命令可以使用。最初我有一个带有 的单线awk,但它相当长。目前我有这个两行脚本(假设完整的文件名在$1):
filebase=`basename "$1"`
lastpart=`echo -n ${filebase%.*} | tail -c3`
Run Code Online (Sandbox Code Playgroud)
因此,例如,“/path/to/somefile.txt”结束了“ILE”在$lastpart。
我可以以某种方式将basename后缀合并到一个命令中,有没有办法在tail不使用管道的情况下将其发送到(或我可以使用的其他东西)?后缀未知,因此我无法将其作为basename.
主要目标实际上并不是尽可能短,而是尽可能一目了然。所有这一切的实际背景是Superuser 上的这个问题,我试图在其中提出一个相当简单的答案。
通常,在我开发的应用程序中,我喜欢为网络上的各种设备包含一个网络状态指示器。监控这些设备的最简单方法是 ping 它们。但是,由于原始套接字的安全要求或外壳到ping. 此外,对于这不是问题的情况,我有点为各种情况编写了相同 ping 代码的略有不同的变体。
大部分的设备,我监视嵌入设备用最少的网络功能(但总是包括ICMP回声),所以我也必须坚持这一协议,喜欢的东西回声协议(马克在下面的评论中指出,谢谢!)通常AREN对我不可用。
是否存在可以为非根应用程序提供低开销 ICMP ping 服务的服务?
我正在考虑编写一个以 root 身份运行并允许其他非 root 应用程序连接到它的服务,添加要监控的设备,然后从中查询 ping 时间和网络状态,但我不想重新发明轮子,我我想知道是否已经存在这样的东西。
现在我正在wavemon查看该地区的 wifi 网络,但我使用什么工具并不重要:我能看到的每个 wifi 网络的信号强度总是彼此相同。它们随着时间的推移而变化,但它们从来没有区别。我无法想象这是正确的,因为这对我来说似乎没有意义。
例如:

我使用什么工具并不重要:
$ sudo iwlist wlan0 scanning | grep 'level\|Address'
Cell 01 - Address: 84:1B:5E:E9:C9:D3
Quality=66/70 Signal level=-44 dBm
Cell 02 - Address: 86:1B:5E:E9:C9:D4
Quality=66/70 Signal level=-44 dBm
Cell 03 - Address: 00:22:75:98:A6:6D
Quality=66/70 Signal level=-44 dBm
Cell 04 - Address: F8:E4:FB:D8:B9:ED
Quality=66/70 Signal level=-44 dBm
Cell 05 - Address: 00:1B:2F:01:DD:04
Quality=66/70 Signal level=-44 dBm
Run Code Online (Sandbox Code Playgroud)
我知道这些网络的无线电物理位置在哪里,信号强度不应该相同。
这些信息的来源是什么,为什么会发生这种情况?
我正在使用 Ubuntu 12.04 LTS:
$ uname -rvm
3.2.0-64-generic #97-Ubuntu SMP Wed Jun 4 22:03:48 UTC 2014 …Run Code Online (Sandbox Code Playgroud) 我有一个正在运行的应用程序正在生成一个大(~200GB)的输出文件,需要大约 35 小时才能运行(目前我大约需要 12 小时)。应用程序只打开文件一次,然后在写入时保持打开状态,直到完成;应用程序还会对文件进行大量随机访问写入(即不是顺序写入)。
现在文件正在保存到我的本地硬盘驱动器,但我刚刚决定,当它完成后,我将把它移到不同的设备上(网络驱动器,通过 SMB 安装的 NTFS)。
为了节省时间而不是稍后移动文件,有什么方法可以暂停程序并以某种方式将当前部分完成的文件移动到另一个设备,做一些技巧,然后恢复程序,以便它现在使用新位置?
我非常肯定答案是否定的,但我想我会问,有时那里有令人惊讶的技巧......
当我插入媒体(例如 SD 卡)时,系统 (Ubuntu 12.04) 会读取分区表并创建指向每个分区的所有 /dev/*[1234] 链接。如果我重新分区媒体,我必须物理删除并重新插入它以更新这些链接。是否有命令可以强制执行此操作而无需移除并重新插入磁盘?
我有一个 USB 外壳中的硬盘驱动器,我正在对其进行一些数据恢复。该驱动器的状态非常糟糕,并且在读取时经常重置。
该设备注册为/dev/sdb. 有时,大约每几千次重置中就会有一次,由于某种原因它会切换到/dev/sdc. 让它恢复的唯一方法是物理拔掉 USB 连接几秒钟,然后重新连接,此时它会再次注册/dev/sdb。
这非常具有破坏性,给我带来了很多问题,因为我正在执行的某些操作可能需要数小时或数天,如果这种情况发生在该过程中的任何时候(例如,当我在工作或睡觉时),我要么必须尝试确定它发生的时间并从该点恢复,或者重新开始。两者都非常困难。
一组“正常”的重置,我期望并且没问题,如下所示:
6月12日11:15:28 ubuntu内核:[199944.703449] usb 1-1.2:使用ehci_hcd重置高速USB设备编号23 6月12日11:15:29 ubuntu内核:[199945.574141] usb 1-1.2:使用ehci_hcd重置高速USB设备编号23 6月12日11:15:29 ubuntu内核:[199946.017483] usb 1-1.2:使用ehci_hcd重置高速USB设备编号23 6月12日11:15:30 ubuntu内核:[199946.460816] usb 1-1.2:使用ehci_hcd重置高速USB设备编号23 6月12日11:15:30 ubuntu内核:[199946.904151] usb 1-1.2:使用ehci_hcd重置高速USB设备编号23 6月12日11:15:30 ubuntu内核:[199947.347659] usb 1-1.2:使用ehci_hcd重置高速USB设备编号23 Jun 12 11:15:31 ubuntu 内核:[199947.690737] sd 16:0:0:0: [sdb] 未处理的错误代码 6 月 12 日 11:15:31 ubuntu 内核:[199947.690747] sd 16:0:0:0: [sdb] 结果:hostbyte=DID_ERROR driverbyte=DRIVER_OK 6月12日11:15:31 ubuntu内核:[199947.690757] sd 16:0:0:0:[sdb] CDB:读取(10):28 00 00 01 1d cd 00 00 01 00 6月12日11:15:31 ubuntu内核:[199947.690780] end_request:I/O错误,dev …