小编Bas*_*asj的帖子

如何调试 udev 规则(在 /etc/udev/rules.d/... 中)

我正在创建一个新的基本规则

/etc/udev/rules.d/10-myrule.rules
Run Code Online (Sandbox Code Playgroud)

包含:

KERNEL!="sdb*", GOTO="auto_mount_end"
ACTION=="add", RUN+="/usr/bin/mount /dev/sdb1 /media"
LABEL="auto_mount_end"
Run Code Online (Sandbox Code Playgroud)

我保存、重新启动并插入了一张 SD 卡(由 识别/dev/sdb1,我看到它dmesg),但没有任何反应。当我手动执行时mount /dev/sdb1 /media,它可以工作。

如何对这样的udev规则进行故障排除/调试?

注意:我使用的是 ArchLinux,但在任何发行版上都应该是一样的?

arch-linux udev mount

26
推荐指数
2
解决办法
6万
查看次数

在 2 台计算机之间同步文件夹,使用文件系统观察器,以便每次修改文件时立即复制

我有:

  • 我通过 SSH 在 IP 203.0.113.0 端口 1234 上连接的 Linux 服务器

  • 一台家用电脑(在路由器后面),公共 IP 198.51.100.17,是 Debian 或 Windows+Cygwin

让文件夹/home/inprogress/ 同步(双向)最简单的方法是什么,有点像rsync,但是使用文件系统观察器,以便每次修改文件时,它都会立即复制到另一侧?(即无需手动调用同步程序)

我正在寻找命令行/无 GUI 解决方案,因为服务器是无头的。

是否有 Linux/Debian 内置解决方案?

networking filesystems synchronization

22
推荐指数
2
解决办法
4666
查看次数

两个类似的大原始二进制文件的差异

假设abc我的本地计算机上有一个 4 GB 的文件。我已通过 SFTP 将其上传到远程服务器,花了几个小时。

现在我在本地稍微修改了该文件(最大可能为 50 MB,但不是此文件中的连续字节),并将其保存到abc2. 我还将原始文件保存在abc本地计算机上。

如何计算的二进制差异abcabc2

应用:

  • 我只能向patch远程服务器发送一个文件(可能最大 100MB),而不是重新上传整个abc2文件(又需要几个小时!),并且仅abc2在远程服务器上重新创建。abcpatch

  • 在本地,与其浪费 8 GB 来备份abcand abc2,我只能保存abc+ patch,因此只需要 < 4100 MB。

这该怎么做?

PS:对于文本,我知道diff,但在这里我正在寻找适用于任何原始二进制格式的东西,它可以是 zip 文件或可执行文件,甚至其他类型的文件。

PS2:如果可能,我不想使用rsync;我知道它可以以有效的方式复制两台计算机之间的更改(不重新发送未更改的数据),但在这里我真的想要一个patch文件,如果我同时拥有abcpatch.

diff patch binary files

14
推荐指数
1
解决办法
6975
查看次数

所有 ALSA 设备的默认音量

我想为所有将永远连接的 ALSA 设备设置一次默认音量

当然,我可以做amixer ...甚至alsamixer修改当前可用声卡的音量。
但我真的很想修改默认音量,即使是将来添加的声卡

我应该在哪个配置文件中设置这个默认音量?

我见过,/var/lib/alsa/asound.state但内容特定于当前连接的声卡。我想要的是一个适用于任何将连接的声卡的解决方案。


上下文:为什么我想要这个?我正在为我的项目SamplerBox提供一个现成的 Debian 映像。用户 #1 可能使用计算机的内置声卡,用户 #2 可能有一个 USB DAC,用户 #3 可能有另一个声卡......
我想提供一个默认的 -3dB 音量,适用于任何 ALSA 声卡人本来可以...


注意:我重新安装了一个全新的系统,似乎默认情况下,所有设备的音量都是 -20dB:

在此处输入图片说明

在此处输入图片说明

configuration alsa audio

13
推荐指数
2
解决办法
3万
查看次数

如何使用大括号扩展获得零填充数字?{1..30} 与 01 02 03 等

做的时候:

for i in {1..30}; do echo $i; grep $i/Aug access.log | sort -u | wc -l; done;
Run Code Online (Sandbox Code Playgroud)

问题是它是这样的:

1/Aug      # should be 01/Aug
2/Aug      # should be 02/Aug
...
Run Code Online (Sandbox Code Playgroud)

如何for i in {1..30}给 01、02、03 而不是 1、2、3?

bash

12
推荐指数
1
解决办法
2786
查看次数

当您执行 whois 时,Linux 会询问谁?

当你这样做时:

$ whois stackoverflow.com
Run Code Online (Sandbox Code Playgroud)

你的Linux是不是先做DNS查询,找到stackoverflow.com的IP,然后直接在那里查询信息?

或者它是否询问“root”whois 服务器(“root whois 服务器”的 IP 是硬编码在 Linux 发行版中,以类似于的方式/etc/bind/db.root?),然后委托给另一个提供信息的 whois 服务器?

什么是连接流?

my computer doing `whois ...` ---> root whois server ---> another whois server ---> information
Run Code Online (Sandbox Code Playgroud)

或者

my computer doing `whois ...` ---> DNS server (?) ---> ... ?
Run Code Online (Sandbox Code Playgroud)

dns whois

12
推荐指数
3
解决办法
3951
查看次数

如何在 GRUB 启动、内核启动等时无缝自定义 JPG 图像启动画面,直到 GUI 应用程序启动?

在标准 Debian 上,如何用自定义 JPG 或 PNG 图像替换 Linux 启动时显示的所有内容,直到带有 GUI 的 Python 应用程序启动?

是否有一种通用的方法可以CustomSplash.jpg无缝的方式用图像替换启动消息显示,没有闪烁,用于:

  • GRUB(我已经在/etc/default/grub: 中使用了它GRUB_HIDDEN_TIMEOUT=0GRUB_HIDDEN_TIMEOUT_QUIET=true但我认为仍然有一个非常短的 GRUB 启动画面)

  • 这些日志消息:

    在此处输入图片说明

  • 开始屏幕 X11/Xfce4(现在我已经启用了自动登录,就像在Debian 9.2.1 命令行上自动登录一样,我startxfce4手动进行,但最终我会创建一个systemd服务来启动xfce

  • 即在 Python 应用程序启动之前的所有内容(使用 Tkinter 或 wxPython)

对于嵌入式计算机,我只想拥有自定义启动画面,然后是应用程序。(我可能无法删除的唯一内容是 BIOS 初始消息?)。

boot debian xfce display

11
推荐指数
1
解决办法
894
查看次数

将文件与密钥异或

从 bash 或标准的 linux 命令行工具,如何将文件与密钥进行异或?就像是:

cat my1GBfile | xor my1MB.key > my1GBfile.encrypted
Run Code Online (Sandbox Code Playgroud)

题外话:我知道这个例子的加密很弱,但我只是想知道这是否可以从 bash 或标准的 linux 命令行工具中获得(或者甚至更好:来自 bash 和 cygwin,因为我同时使用 Linux 和 Windows )。

command-line pipe encryption cygwin

10
推荐指数
3
解决办法
2万
查看次数

如何创建隔离/监禁的 SFTP 用户?

我刚刚friend在我的服务器上创建了一个新用户,目标是将 SFTP 访问权限授予我的一个朋友,以便他可以在那里托管他的网站。

我注意到当用户通过 SFTP 连接服务器时friend,默认文件夹是/home/friend/,但是你可以很容易地出去/home/friend/ 访问服务器上的所有文件,例如/home/anotheruser/website2/config.php!我不要这个。

我被告知将此用户置于“监禁/隔离模式”,因此,在我的默认设置结束时sshd_config

...
Subsystem sftp /usr/lib/openssh/sftp-server
Run Code Online (Sandbox Code Playgroud)

...我补充说:

Match User friend
ChrootDirectory /home/friend
ForceCommand internal-sftp
Run Code Online (Sandbox Code Playgroud)

并做了service sshd restart

然后我根本无法通过 SFTP 与用户连接服务器friend,哎呀!我也尝试通过替换Subsystem ...Subsystem sftp internal-sftp但结果是一样的:friend无法再通过 SFTP 连接服务器。

题:

如何通过 SFTP/SSH隔离用户friend,使其无法出门/home/friend/


注意:我已经阅读了如何使用 chroot Jail 将 SFTP 用户限制到主目录如何将 sftp-only SSH 用户 chroot 到他们的家中? , 等等。

chroot ssh sftp sshd

7
推荐指数
2
解决办法
1539
查看次数

如何让 Systemd 服务永远运行(“启动尚未完成。请稍后再试。”)

我创建了一个必须永远运行的systemd服务(因为它在我的嵌入式计算机上完成主要工作):

# /etc/systemd/system/samplerbox.service
########################################
[Unit]
Description=Starts SamplerBox

[Service]
Type=oneshot
ExecStart=/root/SamplerBox/samplerbox.sh
WorkingDirectory=/root/SamplerBox/

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

这是它的实际作用:

# /root/SamplerBox/samplerbox.sh
################################
#!/bin/sh
python /root/SamplerBox/samplerbox.py
Run Code Online (Sandbox Code Playgroud)

我启用了这项服务

systemctl enable /etc/systemd/system/samplerbox.service
Run Code Online (Sandbox Code Playgroud)

它可以工作,并且在启动时启动。


但是,由于我启用了这项服务,所以当我这样做时systemd-analyze,我看到:

Bootup is not yet finished. Please try again later.
Run Code Online (Sandbox Code Playgroud)

此外,我得到的信息表明该服务仍被视为“激活”/启动:

# systemctl status samplerbox
â samplerbox.service - Starts SamplerBox
   Loaded: loaded (/etc/systemd/system/samplerbox.service; enabled)
   Active: activating (start) since Thu 1970-01-01 00:14:01 UTC; 11min ago
 Main PID: 258 (samplerbox.sh)
   CGroup: /system.slice/samplerbox.service
           ââ258 /bin/sh /root/SamplerBox/samplerbox.sh
           ââ260 python /root/SamplerBox/samplerbox.py
Run Code Online (Sandbox Code Playgroud)

如何正确地使服务永远运行?

systemd services

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