每次我使用 root 登录到 VM 时,su
进入用户帐户并尝试使用screen
它都会引发错误:
Cannot open your terminal '/dev/pts/0' - please check.
一个 Stack Overflow 帖子说我需要用script /dev/null
它来修复它,它可以工作,但它仍然没有解释为什么我需要输入script /dev/null
. 我想了解它的作用以及为什么需要输入它。
每次我使用 root 登录到 VM 时,su
进入用户帐户并尝试使用screen
它都会引发错误:
Cannot open your terminal '/dev/pts/0' - please check.
一个 Stack Overflow 帖子说我需要用script /dev/null
它来修复它,它可以工作,但它仍然没有解释为什么我需要输入script /dev/null
. 我想了解它的作用以及为什么需要输入它。
我的意见是肯定的,确实如此,因为所有对外界有用的暴露(非特权处理器模式)首先需要一个在外界运行的进程。这将需要一个文件系统,甚至是一个临时的、内存中的文件系统。
另一位工程师不同意我的观点,但我似乎无法在所有(我不知道的)案例中证明这一点。
这个问题的答案是否取决于“跑步”的定义?
当我从我的文件管理器 (Thunar) 中“安全地删除”一个外部硬盘驱动器时,整个硬盘驱动器会关闭并从/dev
. 因此,我想在幕后,这是通过调用udisksctl power-off -b /dev/sdX
具有相同效果的来完成的。
我认为应该以某种方式重新启动设备。在阅读了https://stackoverflow.com/a/12675749之后,我认为关闭电源可能是通过写入来完成的/sys/bus/usb/devices/usbX/power/control
,但 sysfs 似乎保持不变。
那么,如何在使用 udisksctl 关闭外部设备后再次打开它?对我来说,从文件管理器中卸载分区后无法重新安装分区,这很烦人。
当我尝试获取 12 月 31 日的周数时,它返回 1。当我得到 12 月 30 日的周数时,我得到 52 --- 这是我所期望的。星期一是正确的。这是在运行 Ubuntu 的 RPI 上。
$ date -d "2018-12-30T1:58:55" +"%V%a"
52Sun
$ date -d "2018-12-31T1:58:55" +"%V%a"
01Mon
没有时间字符串的相同问题
$ date -d "2018-12-31" +"%V%a"
01Mon
我们有env(1)来修改我们要运行的命令的环境(例如env MANPAGER=more man dtrace
)。除了修改要在其中启动命令的目录之外,是否有类似的东西?
理想情况下,我希望它看起来像这样:
theMagicCommand /new/cwd myProgram
这样,它可以与其他类似 env(1) 的命令“链接”,例如,
daemon -p /tmp/pid env VAR=value theMagicCommand /new/cwd myProgram
到目前为止,我可以想到以下解决方案,遗憾的是它没有与env(1)相同的接口:
cd /new/cwd && myProgram
另外,我可以像这样创建一个简单的 shell 脚本:
#! /bin/sh -
cd "${1:?Missing the new working directory}" || exit 1
shift
exec "${@:?Missing the command to run}"
但我正在寻找已经存在的东西(至少在 macOS 和 FreeBSD 上)。
myProgram
不一定是桌面应用程序(在这种情况下,我可以只使用.desktop 文件中的Path键)。