小编con*_*tti的帖子

使用日期和 bash 减去时间

SE 网络上的所有其他问题都涉及假设日期为now( Q ) 或仅指定日期 ( Q ) 的情况。

我想要做的是提供一个日期和时间,然后从中减去一个时间。
这是我首先尝试的:

date -d "2018-12-10 00:00:00 - 5 hours - 20 minutes - 5 seconds"
Run Code Online (Sandbox Code Playgroud)

这导致2018-12-10 06:39:55- 它增加了 7 个小时。然后减去20:05分钟。

在阅读了man和 的info页面后date,我想我已经解决了这个问题:

date -d "2018-12-10T00:00:00 - 5 hours - 20 minutes - 5 seconds"
Run Code Online (Sandbox Code Playgroud)

但是,同样的结果。它甚至从哪里得到 7 小时?

我也尝试了其他日期,因为我想那天我们可能有 7200 闰秒,谁知道呢,哈哈。但同样的结果。

再举几个例子:

$ date -d "2018-12-16T00:00:00 - 24 hours" +%Y-%m-%d_%H:%M:%S
2018-12-17_02:00:00

$ date -d "2019-01-19T05:00:00 - 2 hours - 5 minutes" +%Y-%m-%d_%H:%M:%S …
Run Code Online (Sandbox Code Playgroud)

gnu date

24
推荐指数
4
解决办法
2万
查看次数

X11 转发时出现“此应用程序没有响应”的废话

我有一个在 debian 上运行 XFCE 的服务器和一个在 arch 上运行 gnome3 的客户端,我想使用 X11 转发从客户端控制在服务器上运行的 GUI 应用程序。

ssh -X user@server在客户端上,然后是localc- 有效!

除了每隔几秒钟,无论我做什么 - 甚至移动窗口 - gnome 都会告诉我“Libreoffice Calc 没有响应。你想强制退出它吗?”。计算器也会发生这种情况,任何东西。

是的,我承认有一点延迟(猜测是 0.3 秒 - 这可以以某种方式改进吗?)但它绝对不是没有响应。该对话框每隔几秒就会出现一次。没有任何东西被冻结或任何东西。

编辑:设置gsettings set org.gnome.mutter check-alive-timeout 20000仍然显示该对话框,只是现在每 20 秒显示一次,即使没有任何反应。将其设置为0disbale 它有效,但我肯定想找到并解决导致 gnome 认为它没有响应但实际上没有响应的真正问题。

gnome xforwarding x11

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

在“dd”安装 debian 后在 USB 的可用空间上创建另一个分区

基本上是这个问题的重复,但更清晰并提供更多细节。

\n

我想要的是一个包含两个东西的 USB 驱动器:debian 安装程序,以及使用 USB 剩余空间的另一个分区。它应该用于 debian 内的持久性。只是一个常规可用的分区。

\n

在我的链接问题中,建议使用 fdisk/gparted,但这些并不起作用。

\n

GParted 显示如下:\ngparted

\n

lsblk:

\n
sdc              8:32   1   7.5G  0 disk  \n\xe2\x94\x9c\xe2\x94\x80sdc1           8:33   1   2.7G  0 part  \n\xe2\x94\x94\xe2\x94\x80sdc2           8:34   1   2.9M  0 part\n
Run Code Online (Sandbox Code Playgroud)\n

fdisk /dev/sdc:

\n
\n

该设备包含“iso9660”签名,它将被写入命令删除。有关更多详细信息,请参阅 fdisk(8) 手册页和 --wipe 选项。

\n
\n

我尝试忽略这一点并创建第三个分区,它有效但使 debian 无法启动。启动菜单显示,但在尝试启动时会出现一些错误,例如找不到 ext3/ext4 分区或类似的错误。fdisk在使用第三个分区写入后,我的电脑(nautilus 文件管理器)也不再检测到 debian 分区。

\n

fdisk -l:

\n
Device     Boot Start     End Sectors  Size Id Type\n/dev/sdc1  *        0 5706399 …
Run Code Online (Sandbox Code Playgroud)

partition debian live-usb

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

SSH 用于隧道时有多安全?

场景:我想使用 SSH/SFTP 从客户端 A 连接到客户端 B。我无法在任一客户端上打开端口。为了解决这个问题,我买了一个便宜的 VPS 作为中继服务器。

在客户端 BI 上通过远程端口转发连接到 VPS,如下所示:

ssh -4 -N -f -R 18822:localhost:22 <user>@<vps-ip>
Run Code Online (Sandbox Code Playgroud)

在 VPS 上,我使用-g(全局)设置了本地端口转发,如下所示:

ssh -g -f -N -L 0.0.0.0:18888:localhost:18822 <user>@localhost
Run Code Online (Sandbox Code Playgroud)

这样我就可以从客户端 A 直接连接到客户端 B <vps-ip>:18888。效果很好。

现在我的问题是,这有多安全?据我所知,SSH/SFTP 连接是完全加密的,但是在中间使用 VPS 是否有可能使其安全性降低?

让我们假设这两种情况:

案例A:VPS本身没有改变,但流量和文件被完全监控。

情况 B:VPS 被完全破坏,文件系统内容可以被更改。

如果我现在通过 SFTP 将文件从客户端 A 发送到客户端 B,托管 VPS 的公司是否有可能“拦截”它并读取文件的(未加密)内容?

networking security ssh encryption ssh-tunneling

6
推荐指数
1
解决办法
2237
查看次数

将应用程序的音频输出路由到多个播放设备

我有一个应用程序需要录制来自其中的音频。为此,我使用pavucontrol将录音软件的音频输入设置为音频输出的监视器。现在我的问题是大多数时候,我不想听到输出。为此,我使用modprobe snd-aloop. 这很好用,但有时我想在录音的同时收听实时音频流。这意味着我总是必须同时更改声音应用程序的音频输出和录音应用程序的音频输入,这真的很累人。另外,这将导致录音应用程序记录我听到的​​所有内容,而不仅仅是特定的应用程序。

我找到了这个答案,但这并不是我想要的,因为我不想在所有设备上都有声音输出。只是虚拟循环和我选择的另一个输出。我的系统是使用 gnome3-shell 的 arch-linux。我不希望这是永久的,所以我需要一个可以即时更改的解决方案。

额外问题:我希望有一个启用/禁用“实时监听”的快捷方式(向应用程序的音频流添加第二个音频输出),因此 CLI 命令会很棒。

完全清楚,我希望能够在以下音频路由之间切换:

[playback app] --> [dummy aloop] --> [monitor of aloop] --> [recording app]
Run Code Online (Sandbox Code Playgroud)

[playback app] --> [dummy aloop] --> [monitor of aloop] --> [recording app]
               \-> [headphones] (simultanously)
Run Code Online (Sandbox Code Playgroud)

alsa audio pulseaudio

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

Audacity 不再适用于pulseaudio

更新:今天的升级alsa-lib-1.1.7-2解决了这个问题。(2018-11-23)


Arch Linux,最新。像往常一样,-Syu升级再次破坏了事情。这次是大胆。通常 audacity 和任何其他播放/录制应用程序都会出现在pauvcontrol- 不再是 audacity 了。我可以用pauvcontrolaudacity 来选择接收器和源,从中我想录制或播放音频——不再是了。

在大胆的偏好中,它只ALSA在顶部下拉列表中说,我不确定是应该这样还是PulseAudio之前说过。播放选项卡中甚至没有我的所有设备。录制设备选择也是如此,但我需要从中录制的环回设备就在那里,这样就可以了。

喜好

但是现在我也想从 audacity 播放声音,但它不再起作用了。它没有列出我的 USB 播放设备,当我将其设置为时,sysdefault我只会收到错误消息。

$ pulseaudio -v
pulseaudio 12.2

$ audacity --version
lilv_world_add_plugin(): warning: Duplicate plugin <http://lv2plug.in/plugins/eg-params>
lilv_world_add_plugin(): warning: ... found in file:///usr/lib/lv2/eg-params.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib64/lv2/eg-params.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin <http://lv2plug.in/plugins/eg-midigate>
lilv_world_add_plugin(): warning: ... found in file:///usr/lib/lv2/eg-midigate.lv2/
lilv_world_add_plugin(): warning: ... and      file:///usr/lib64/lv2/eg-midigate.lv2/ (ignored)
lilv_world_add_plugin(): warning: Duplicate plugin <http://lv2plug.in/plugins/eg-fifths>
lilv_world_add_plugin(): …
Run Code Online (Sandbox Code Playgroud)

arch-linux alsa audio pulseaudio audacity

5
推荐指数
1
解决办法
4736
查看次数

gnome-maps 如何获取我当前的位置?

在我的台式电脑(arch)和笔记本电脑(debian)上,我使用 gnome-maps。我在两台设备上都使用 VPN。(iptables防火墙不允许非 VPN 流量,无 DNS 泄漏。)

在我的桌面上,“当前位置”是 VPN 所在的城市,正如预期的那样。

然而,在我的笔记本电脑上,gnome-maps 能够获取我的实际位置(非常精确,几乎到脚)。

这怎么可能?使用什么技术?笔记本电脑没有 GPS。

gnome geolocation

3
推荐指数
1
解决办法
1658
查看次数

如何在 bash 中安全地转义变量字符串(用户输入)?

我有一个非常简单的类似聊天的工具,可以在 GNUscreen会话中运行。该screen窗口分成两部分,上部运行tail -f file.txt和底部运行具有下列内容的脚本:

#!/bin/bash
while : ; do
        read -p "Message: " msg
        ctime=$(date +"%H:%M:%S")
        echo "[${ctime}] User: ${msg}" >> file.txt
done
Run Code Online (Sandbox Code Playgroud)

非常简单,但可以根据我的要求完成工作。只有一个问题:当我按下ESC或 任何箭头键时,它会插入一个转义序列,^[[D例如。这会弄乱文件,导致糟糕的输出。

所以我的问题很简单:如何转义输入read以便写入文件是安全的?

我试过echo "[${ctime}] User: ${msg}" | strings >> file.txt这让它好多了,不再有大的混乱(例如没有被覆盖或错误地输出),但事情仍然不完美(例如输入te^[[Dst会变成te\n[Dst\n作为一个实际的新行) )。

bash gnu-screen string escape-characters

0
推荐指数
1
解决办法
904
查看次数