默认情况下,htop
显示的进程比其他工具(top、ps)多得多。解决方案是H
按为什么 htop 中同一标题下列出了许多进程?中提到的,以获取“通常”的较短进程列表。
我们应该使用哪个命令行参数来运行htop
以实现这种行为?
默认情况下,htop
显示的进程比其他工具(top、ps)多得多。解决方案是H
按为什么 htop 中同一标题下列出了许多进程?中提到的,以获取“通常”的较短进程列表。
我们应该使用哪个命令行参数来运行htop
以实现这种行为?
根据上次修改日期递归地对目录中的文件进行排序的主要答案提供了一种按修改日期递归地排序目录中的所有文件的方法:
find -printf "%TY-%Tm-%Td %TT %p\n" | sort -n
但是它不仅列出文件,还列出目录。如何只列出文件?
在无头嵌入式计算机上(在只读文件系统上启动),我发现这systemd-tmpfiles-setup.service
相当慢,并且会阻止其他服务更早启动(我检查过systemctl list-dependencies myservice.service
)。
如何在只读文件系统上使其更快?
journalctl -u systemd-tmpfiles-setup.service
还确认需要将近 4 秒:
-- Logs begin at Sat 2021-12-11 01:55:43 GMT, end at Sat 2021-12-11 01:58:03 GMT. --
Dec 11 01:55:**43** foo systemd[1]: Starting Create Volatile Files and Directories...
Dec 11 01:55:**47** foo systemd-tmpfiles[149]: **rm_rf(/tmp): Read-only file system**
Dec 11 01:55:47 foo systemd-tmpfiles[149]: symlink(/etc/machine-id, /var/lib/dbus/machine-id) failed: Read-only file system
Dec 11 01:55:47 foo systemd-tmpfiles[149]: symlink(../proc/self/mounts, /etc/mtab) failed: Read-only file system
Dec 11 01:55:47 foo systemd-tmpfiles[149]: Failed to open directory 'coredump': No such file or directory
Dec 11 01:55:47 foo systemd-tmpfiles[149]: Failed to open directory 'private': No such file or directory
Dec 11 01:55:47 foo systemd-tmpfiles[149]: Failed to open directory 'private': No such file or directory
Dec 11 01:55:47 foo systemd-tmpfiles[149]: Failed to open directory 'private': No such file or directory
Dec 11 01:55:47 foo systemd-tmpfiles[149]: Failed to open directory '.X11-unix': No such file or directory
Dec 11 01:55:47 foo systemd-tmpfiles[149]: Failed to open directory '.ICE-unix': No such file or directory
Dec 11 01:55:47 foo systemd-tmpfiles[149]: Failed to open directory '.XIM-unix': No such file or directory
Dec 11 01:55:47 foo systemd-tmpfiles[149]: Failed to open directory '.font-unix': No such file or directory
Dec 11 01:55:47 foo systemd-tmpfiles[149]: Failed to open directory '.Test-unix': No such file or directory
Dec 11 01:55:47 foo systemd[1]: Started Create Volatile Files and Directories.
这是结果systemd-analyze plot
:
对于SamplerBox项目,到目前为止,我一直在使用/dev/sda1 /media auto nofail 0 0
USB 闪存驱动器在插入无头计算机时自动挂载,另请参阅Auto-mount and auto-remount with /etc/fstab。但这似乎不太可靠,例如,当 USB 闪存驱动器被移除,然后重新插入时。
Debian 中有/dev/sd*
/media/
哪些轻量级且易于配置的解决方案可以自动挂载每个设备?
如果插入了第二个闪存驱动器,请忽略或安装到另一个文件夹/media2/
如果驱动器被移除(即使没有正确的umount
),然后在几分钟后重新插入,它应该再次安装
用例是一个无头设备,最终用户可以在其上插入 USB 闪存驱动器,并且它应该始终被识别(无论他们是否在未经软件许可的情况下移除了以前的 USB 闪存驱动器)。
我有一个脚本(不是我写的,我无法修改它)必须运行数天,有时会失败(退出并出现错误)。
在这种情况下,我所要做的就是重新启动服务器(目前没有更好的解决方案),然后重新启动脚本。目前我这样做:
通过 SSH 登录
screen -S job
./myscript.sh
开始工作(假设这个脚本只包含:dothis
并且这个过程可能会因错误而退出)
CTRL A,D与屏幕分离
……等几个小时……
登录,使用 恢复屏幕screen -r job
。
如果仍在运行,请分离并稍后返回。
如果脚本失败,sudo reboot
请从第 1 步开始,以使长期作业继续进行。
如何在没有人工干预的情况下做到这一点?
如果脚本存在错误,如何自动执行此操作并让服务器自动重新启动,然后重新启动脚本?
我已经阅读了为什么要使用 Dovecot 和 Postfix/Sendmail?,为什么要同时使用 Dovecot 和 Postfix?,为什么要同时使用 Dovecot 和 Postfix?这给出了一般的想法,但在这里我正在寻找更精确的细节来了解电子邮件服务器如何连接在一起。
假设我拥有example.com
配置如下 DNS 的域:
example.com MX mail.example.com
mail.example.com A 1.2.3.4
并且安装在我postfix
的dovecot
IP 1.2.3.4 的 Debian 服务器上。
假设我发送了一封电子邮件:
[email protected]
,来自我的本地计算机 Thunderbird[email protected]
在此过程中将发生的不同联系的总体情况是什么?
以下是否正确:
smtp.myisp.com
(端口 25 或 587)example.com
并最终连接到mail.example.com
,即我自己的服务器postfix
正在侦听端口 25 或 587postfix
将电子邮件保存在磁盘上(默认情况下在哪里?)postfix
将电子邮件发送到dovecot
(他们如何连接在一起?)[email protected]
用另一个 Thunderbird 帐户获取邮件时,计算机将在端口 110 或 995 (POP3) 上连接我的服务器 1.2.3.4。?
在这种情况下,postfix
是 MTA,dovecot
是 POP3/IMAP 服务器,但什么是 MDA/LDA(Delivery Agent)?
比方说:
a
是一个包含随机字节的 256 MB 文件b
是同一个文件,只是多了一个前导字节0
感谢这个答案,我发现rsync
能够计算这两个文件之间的“二进制差异补丁”:
rsync --only-write-batch=patch b a
在这个例子中,patch
文件是......只有 65 KB,所以非常好。
总之,rsync
detect这么少的byes怎么改的?我最初认为它会比较:
对于各种 k 值,例如 2 可能的最大幂 (2^j),如果不匹配,则为 2^(j-1),然后为 2^(j-2),等等。
但是对于这些文件a
和b
,它会完全失败,因为因为b
只是a
移动了一个字节,所以根本不会有类似的块!然后我们会期望patch
是... 256 MB。
但是在这里它以一种更聪明的方式工作,在这个简单的例子中算法是如何工作的b
=一个字节与内容的连接a
?
假设abc
我的本地计算机上有一个 4 GB 的文件。我已经通过 SFTP 将它上传到远程服务器,花了几个小时。
现在我在本地稍微修改了文件(可能最大 50 MB,但不是此文件中的连续字节),并将其保存到abc2
. 我还将原始文件保存在abc
本地计算机上。
如何计算abc
和的二进制差异abc2
?
应用:
我只能将patch
文件(可能最大 100MB)发送到远程服务器,而不是重新上传整个abc2
文件(再次需要几个小时!),并且仅abc2
在远程服务器上重新创建。abc
patch
在本地,我可以只保存+ ,而不是浪费 8 GB 来备份abc
和,所以它只需要 < 4100 MB。abc2
abc
patch
这个怎么做?
PS:对于文本,我知道diff
,但在这里我正在寻找适用于任何原始二进制格式的东西,它可以是 zip 文件或可执行文件,甚至是其他类型的文件。
PS2:如果可能,我不想使用rsync
; 我知道它可以以有效的方式在两台计算机之间复制更改(而不是重新发送未更改的数据),但是在这里我真的想要一个patch
文件,如果我同时拥有abc
和patch
.
我刚刚friend
在我的服务器上创建了一个新用户,目标是为我的朋友提供 SFTP 访问权限,以便他可以在那里托管他的网站。
我注意到,通过SFTP与用户连接服务器时friend
,默认文件夹是/home/friend/
,但是您可以轻松退出/home/friend/
并访问服务器上具有读取权限的所有文件,例如/home/anotheruser/website2/config.php
!我不想要这个。
我被告知将此用户置于“监禁/隔离模式”,因此,在我的默认值结束时sshd_config
:
...
Subsystem sftp /usr/lib/openssh/sftp-server
...我添加了这个:
Match User friend
ChrootDirectory /home/friend
ForceCommand internal-sftp
并做到了service sshd restart
。
然后我根本无法通过 SFTP 与用户连接服务器friend
,哎呀!我也尝试通过替换Subsystem ...
,Subsystem sftp internal-sftp
但结果是一样的:friend
无法再通过 SFTP 连接服务器。
问题:
如何隔离用户,使他无法通过 SFTP/SSHfriend
出门?/home/friend/
注意:我已经阅读了如何使用 chroot Jail 将 SFTP 用户限制在主目录中,我如何 chroot 仅 sftp 的 SSH 用户进入他们的家? , ETC。
这列出了两个备份中的所有文件,按大小排序:
tar tvf backup1.tar.bz2 |sort -k3 -n >backup1_files.txt
tar tvf backup2.tar.bz2 |sort -k3 -n >backup2_files.txt
我想列出所有存在于 backup2.tar.bz2 但不存在于 backup1.tar.bz2 中的文件,按大小排序。
这个怎么做?
注意:
执行diff
这些 .txt 文件中的一个将不起作用,因为某些文件的修改日期不会相同。因此,这个问题与Is there a tool to get the lines in a file that are not in another? 不重复?.
删除v
会删除修改日期,还会删除文件大小,所以这不是一个选项,因为不可能按大小对它们进行排序。
我有:
我通过 SSH 在 IP 203.0.113.0 端口 1234 上连接的 Linux 服务器
一台家用电脑(在路由器后面),公共 IP 198.51.100.17,是 Debian 或 Windows+Cygwin
/home/inprogress/
让文件夹同步(双向)最简单的方法是什么,有点像rsync
,但使用文件系统观察程序,以便每次修改文件时,它都会立即在另一端复制?(即无需手动调用同步程序)
我正在寻找命令行/无 GUI 解决方案,因为服务器是无头的。
是否有 Linux/Debian 内置解决方案?
我正在尝试这样做:如果一个名为的 GNU 屏幕worker
已经存在,则重新附加到它,否则通过启动python example.py
.
我试过了:
if [ls /var/run/screen/S-root/ |grep -Fxq worker] then screen -r worker else cd /home/www/example/; screen -S worker python example.py fi
但它似乎不起作用。
语法有问题吗?
我想做一个自动执行此操作的单行 bash 命令:
screen -S myserver
python myserver.py # inside the new screen
CTRL A, D (detach)
我认为这行不通:
screen -S myserver && python myserver.py
因为python myserver.py
不会在screen
. _
我正在尝试将我的计算机直接(没有第 3 方服务器)连接到朋友的计算机。我们都在 ISP 路由器后面,并且希望(作为一个挑战!)在不修改路由器配置的情况下进行连接。
myself$ nc -p 7777 public-ip-friend 8888
friend$ nc -p 8888 public-ip-myself 7777
和 UDP 打孔:
myself$ nc -u -p 7777 public-ip-friend 8888
friend$ nc -u -p 8888 public-ip-myself 7777
但他们都没有工作。
如何解决这个问题?
注意:VPS(不在 NAT 后面)<--> 我的家用电脑(仍在路由器后面)使用相同的方法工作。
我在我的 VPS 上重新安装了全新的 Debian 8。
全部设置为默认值。
dpkg -s exim4
并dpkg -s postfix
说没有安装exim,并且安装了postfix 。这可以通过lsof -i :25
显示 PID 478 来确认,然后ps p 478
显示478 ? Ss 0:00 /usr/lib/postfix/master
。没做过apt-get install postfix
,好像已经默认安装了。
我已经为example.com
我的注册商完成了 DNS MX 记录,并将其指向我的服务器。
我刚刚从我的 Gmail 发送了一封电子邮件到[email protected]
.
我还在No mail
做的时候看到$ mail
。
如何查看是否有东西到达后缀?
是否需要在全新的 Debian 安装上进行配置以接受来自互联网的电子邮件?
我应该在root
本地创建邮箱,以接受来自外部邮寄者的邮件[email protected]
吗?
这是iptables
(未修改,默认配置)的结果:
root@blah:~# iptables -nvL
Chain INPUT (policy ACCEPT 77135 packets, 50M bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 2 packets, 120 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 66416 packets, 11M bytes)
pkts bytes target prot opt in out source destination
我现在看到cat /var/log/mail.log
这个:
Nov 22 11:57:32 blah postfix/smtpd[10485]: connect from mail-ua0-f171.google.com[209.85.xxx.xxx]
Nov 22 11:57:32 blah postfix/smtpd[10485]: NOQUEUE: reject: RCPT from mail-ua0-f171.google.com[209.85.xxx.xxx]: 454 4.7.1 <[email protected]>: Relay access denied; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<mail-ua0-f171.google.com>
Nov 22 11:57:32 blah postfix/smtpd[10485]: disconnect from mail-ua0-f171.google.com[209.85.xxx.xxx]