配置curl
以建立经过身份验证的 SMTP 连接,当签署服务器证书的 CA 不为人所知(即:未在本地 CA 文件中列出)时,STARTTLS
我想curl
在发送身份验证数据之前中止连接。
这可能吗?
配置curl
以建立经过身份验证的 SMTP 连接,当签署服务器证书的 CA 不为人所知(即:未在本地 CA 文件中列出)时,STARTTLS
我想curl
在发送身份验证数据之前中止连接。
这可能吗?
似乎 Windows 10 上的 Outlook 2019(来自 Office Professional Plus)的搜索功能完全损坏,或者记录非常糟糕:
我自动创建了一些消息,我想清理其中的一些。幸运的是,它们在主题中有一个版本号,如“vX.YZ”,所以我只是尝试匹配一个特定的版本(标记并删除所有匹配的消息)。
但是搜索v1.1.1
Outlook 时也匹配了v1.4.0
其他内容。我不明白。将搜索字符串放在双引号中没有帮助。我尝试了快速搜索和扩展搜索,结果没有任何区别。
搜索"v1.1.1"
,匹配到一封主题为 的邮件pw-expiration/LPE/v1.4.0: Password Expiration...
,以及主题pw-expiration/LPE/v1.3.1: Password Expiration...
和pw-expiration/LPE/v1.2.0: Password Expiration...
。
注意:当我激活截图工具时,Outlook 打开了搜索下拉菜单,但是当显示搜索结果时,下拉列表已被折叠(我在截图工具中添加了黄色标记以便说明)。
例如,这是匹配消息(德语)的文字主题行:
Subject: pw-expiration/LPE/v1.4.0: Passwortablauf von testuser vor 4.456
Tagen
但是,当我输入"v1.4"
搜索字符串时,"v1.4"
在搜索结果中突出显示,但仍列出了没有出现该字符串的其他主题行。
当我输入时"v.1.1"
,没有找到任何结果(这是正确的)。
那么到底发生了什么?市场领导者又推出了一款彻底失败的产品?
通过备份/恢复(使用Acronis True Image测试版)将安装转换为 IRST(英特尔® 快速存储技术)/VMD(英特尔® 卷管理设备)RAID1 后,我遇到了无法启动 Windows 11的问题。之前我在 Windows 中安装了 VMD 驱动程序,但似乎它没有添加到启动驱动程序中(很可能是因为当时认为不需要它)。
我找到了一篇文章(向离线 Windows 映像添加和删除驱动程序包),描述了如何从 WinPE 启动介质将缺失的驱动程序“注入”到 WIM,并且我成功地将缺失的 VMD 驱动程序添加到恢复 WIM 中。
但是我找不到标准 Windows 启动对应的 WIM(文章安装启动驱动程序描述了重新安装(这是我想要避免的))。
我也尝试了最新的Acronis Universal Restore 2025的测试版(应该能够修复此类问题),但该版本似乎有一个重大错误:无论我如何尝试,都没有成功(支持问题待定)。
由于 RAID 中仍有一些未使用的空间,因此我安装了额外的 Windows 副本(希望新的、正确的 Windows 启动管理器可以解决问题,但并没有)。
现在我有一个可以运行的 UEFI 引导加载程序,它显示了三个 Windows 11 安装(两个无法启动,新安装的安装缺少很多其他驱动程序,但可以启动)可供选择(我称之为(Windows 启动管理器分区)“第一个”引导阶段,因为当我选择我的旧 Windows 时,它无法启动(我称之为“第二个”引导阶段,显然发生在“Windows”可以访问实际安装的驱动程序之前)。
我的问题是:
为了避免可能的错误,我想定义和使用在systemd
单元文件本身中使用的变量,即:不是用于执行的命令。
例如考虑这个(无效)单位:
[Unit]
CONFIG=/etc/some_dir/%i.conf
AssertPathExists=$CONFIG
#...
[Service]
EnvironmentFile=$CONFIG
# ...
所以我想定义变量CONFIG
并将其用于多个单元指令。这可能吗?
为了修复无法启动的 SLES15 系统,我启动了 Rescue 映像,将现有系统挂载到/mnt
,然后执行chroot /mnt
(我省略了细节,因为这些可能是已知的(或者在How do you create a chroot environment for OpenSUSE Leap 中找到) ? ))。
当尝试使用重建 initrd时,救援系统中使用的内核与环境中dracut
找到的内核不匹配。chroot
例如输出是:
dracut: cannot find module directory /lib/modules/5.3.18.57-default
(是救援系统的内核;例如5.3.18.57-default
不引导的内核)5.3.18-150300.59.46-default
我不确定正确的语法是什么;我是否必须指定 initrd 和内核的完整路径,如果是“vmlinuz”变体或“vmlinux.gz”变体?
我刚刚发现了一个我不明白的问题(SLES15 SP2):
我错误地配置了一项logrotate
服务(在 中/etc/logrotate.d
)。在 SLES 15中,每天logrotate.service
触发。logrotate.timer
但是,我配置错误的服务似乎只记录了一次错误消息(这是我很长时间没有发现问题的主要原因)。
谁能解释发生了什么?似乎执行了其他 logrotate 服务(我不确定)。
logrotate 的错误是由失败的postrotate
操作引起的,特别是未能发送SIGHUP
到正在运行的进程。
Dec 18 00:00:20 h16 systemd[1]: Starting Rotate log files...
Dec 18 00:00:20 h16 logrotate[41799]: Failed to kill unit \x7b__SERVICE__\x7d.service: Unit \x7b__SERVICE__\x7d.service is not loaded.
Dec 18 00:00:20 h16 logrotate[41799]: error: error running shared postrotate script for '/var/log/iotwatch/MD10/*.log '
Dec 18 00:00:20 h16 systemd[1]: logrotate.service: Main process exited, code=exited, status=1/FAILURE
Dec 18 00:00:20 h16 systemd[1]: Failed to start Rotate log files.
Dec 18 00:00:20 h16 systemd[1]: logrotate.service: Unit entered failed state.
Dec 18 00:00:20 h16 systemd[1]: logrotate.service: Failed with result 'exit-code'.
尝试在 SLES12 SP5 上使用 构建我自己的 monit RPM 包rpmbuild
,我遇到了一些让我感到困惑的错误:
> rpmbuild -ba -r ~/rpmbuild GNU/RPM/monit.spec
error: Failed build dependencies:
flex >= 2.6 is needed by monit-12:5.29.0-0.0.x86_64
bison >= 2.7 is needed by monit-12:5.29.0-0.0.x86_64
libopenssl-devel >= 1.0.2p is needed by monit-12:5.29.0-0.0.x86_64
pam-devel >= 1.1.8 is needed by monit-12:5.29.0-0.0.x86_64
> rpm -q flex bison libopenssl-devel pam-devel
flex-2.6.4-9.7.1.x86_64
bison-2.7-6.107.x86_64
libopenssl-devel-1.0.2p-1.13.noarch
pam-devel-1.1.8-24.49.1.x86_64
看起来好像所有依赖项都在那里,但仍然rpmbuild
抱怨!
我没有看到明显的东西,还是有什么东西坏了rpmbuild
?提供的包裹rpmbuild
是rpm-build-4.11.2-16.21.1.x86_64
(截至今天最新的)。
好像有问题rpmbuild
,因为添加--nodeps
编译成功,但是我注意到指定的“buildroot”是重复的,即:打包时使用“~/rpmbuild/~/rpmbuild/BUILDROOT”,但是正确的“BUILD”编译时的目录。
我想知道如何检测现代 Linux 中接口的混杂模式(“现代”意味着缺少netstat
)。
我正在寻找一种比检查标志更用户友好的解决0x100
方案/sys/class/net/*/flags
。
整个故事可以在openSUSE Bugzilla中找到,但这里是摘要:
对于 openSUSE Leap 15.3,“特殊功能键”(媒体键等)不起作用,或者对于 Lenovo Thinkpad E15(第 2 代)不起作用。
我想使用特殊键,尤其是暂停/恢复笔记本电脑而无需关机/关机和重新启动/开机的功能。
我不明白(基于https://ubuntuforums.org/showthread.php?t=1643334):
% grep -a -b -P --only-matching 'LUKS\xba\xbe' /dev/sde ### does not match
% echo -e 'LUKS\xba\xbe...' | grep -a -b -P --only-matching 'LUKS' ### matches
0:LUKS
% echo -e 'LUKS\xba\xbe...' | grep -z -a -b -P --only-matching 'LUKS' ### matches
0:LUKS
% echo -e 'LUKS\xba\xbe...' | grep -z -a -b -P --only-matching 'LUKS\xba' ### does not match
% echo -e 'LUKS\xba\xbe...' | grep -z -a -b -P --only-matching 'LUKS\xba\xbe' ### does not match
为什么 grep 不匹配(显然应该如此),我该怎么做才能使其匹配?
我曾在 Tails 4.18 和 openSUSE Leap 15.2 中尝试过这些命令。
与使用 systemd 在关机/重启时运行脚本类似但不完全相同:
我想systemd
在系统关闭(关闭或重新启动,也可能出现恐慌)以及系统启动时运行自定义进程。这两个动作都应该尽早运行。
显然Type
服务将是 a oneshot
,但我不确定其余的(Wants
、Before
、After
、WantedBy
等)。
由于我的流程需要日记,我添加了(除其他外):
[Unit]
DefaultDependencies=no
Wants=syslog.target
After=local-fs.target exit.target
Before=multi-user-target
[Service]
Type=oneshot
RemainAfterExit=no
[Install]
WantedBy=multi-user.target
启用该服务后,我的程序在本地文件系统安装后启动(通过),但在创建临时文件之前ExecStart=
立即再次启动(通过)。ExecStop=
重新启动时,它根本没有启动。
为 net-snmp 5.7.3 定制一个 SNMP 视图,我无法IF-MIB::ifPhysAddress
从我的视图中排除:无论我尝试过什么,我仍然在snmpwalk
. 我仍然确定我的观点正在被用作其他排除项的工作。
所以这是我的最后一次尝试:
view publ included .iso.org.dod.internet.mgmt.mib-2 fc
# iso(1) org(3) dod(6) internet(1) mgmt(2) mib-2(1)
view publ excluded .1.3.6.1.2.1.2.ifTable.ifEntry.ifPhysAddress ff:c0
# 1 3 6 1 2 1 interfaces(2) ifTable(2) ifEntry(1) ifPhysAddress(6)
# .1.3.6.1.2.1.2.2.1.6
# this works:
view publ excluded .1.3.6.1.2.1.ip fe
# ip(4)
最初给出的 OID 和掩码是错误的,导致 error bad SUBTREE object id
。尽管如此,即使使用固定的 OID 和掩码,ifPhysAddress
条目仍然包含在视图中。
我发现使用符号名称会导致问题:如果我只使用数字 ID,它可以工作。
不过,我不知道是什么导致了问题:IF-MIB.txt
位于 中/usr/share/snmp/mibs
,它包含正在使用的定义,并且它包含在net-snmp-config --default-mibdirs
.
接受此语法,但不排除表列:
view publ excluded IF-MIB::ifPhysAddress ff:c0
在使用 Windows 10 时,我必须将我的用户更改为使用 Active Directory (AD) 的用户,这意味着我获得了新的 SID 和%userprofile%
路径。在复制和调整所有文件、设置和一些 ACL 后,我遇到了 LibreOffice Writer 抱怨无法锁定文件的问题(例如“文件被未知用户锁定以进行编辑”),建议以只读方式打开它,或打开文件的副本。当我尝试编辑副本时,Writer 抱怨“写入错误。无法写入文件”。
我不知道问题可能出在哪里(错误细节很差),所以我已经检查了这些:
我还能检查什么?
类似于如何在网络上添加黑洞路由?,但我想知道如何在 SLES 12 中使这样的路线永久化。
在 YaST 中,我只能添加“正常”路由。
我有一台 openSUSE 计算机,它很早就开始使用 BtrFS(比如 Leap 42.2)。在过去的某个时刻,/tmp 子卷已满(一个大文件),我无法恢复空间,直到重新启动(rm
触发了一个No space left on device
)。然后一切看起来都很好至少一年。
但是最近(同时在 Leap 15.1)BtrFS 又满了,我不知道该怎么办:我有很多这样的快照:
# ls -l /.snapshots/
total 4
drwxr-xr-x 1 root root 32 Dec 18 2015 1
drwxr-xr-x 1 root root 32 May 14 09:45 1820
drwxr-xr-x 1 root root 66 May 14 09:46 1821
...
drwxr-xr-x 1 root root 32 Aug 8 08:08 1926
drwxr-xr-x 1 root root 38 Aug 8 08:09 1927
drwxr-xr-x 1 root root 38 Aug 8 08:12 1928
在成功检查了所有块的校验和(没有问题)后,我开始“平衡”,希望出现一些可用空间。但平衡似乎永远不会结束,所以我试图中止它。等待至少 15 分钟平衡中止后,我重新启动计算机尝试其他操作。当时文件系统已满 99%。
我想我会使用清理最旧的快照 ( 1
) rm -rf /.snapshots/1
。不幸的是,完成后,必要的程序/usr
消失了,我的系统变得无法启动!
所以我的问题是:这是预期的行为,还是我做错了什么?如果我做错了什么,删除旧快照的正确步骤是什么?
我写了一个允许创建多个实例的系统服务单元。包装器脚本从通用配置文件中读取实例的配置详细信息,构建要执行的实际命令。到目前为止,这是有效(start,
stop
的,status
)。
但是,当我在配置文件中指定一个无法找到的实例(称为“假实例”)时,我的ExecStart
命令失败(如预期的那样)。然后除了包装器脚本(当然终止)之外没有命令启动。
不幸的是 systemd 然后发疯了:它反复尝试重新启动“假实例”。每个status
命令都会报告一个错误,而且我也无法访问stop
该假实例。所以即使没有任何东西在运行,systemd 也有一些关于那个“假实例”的知识。我怎样才能删除它?
是否有特殊的退出代码使 systemd 立即忘记实例?(我可以同时尝试RestartPreventExitStatus=
)
我有一个使用实例的 systemd 服务文件,该文件适用于start
和status
,但在stop
随后status
显示这些错误消息之后:
Runtime directory is not valid, ignoring assignment: /var/run/iotwatch/%i
Unknown lvalue 'PidFile' in section 'Service'
以下是详细信息:首先是服务文件/usr/lib/systemd/system/[email protected]
:
[Unit]
Description=iotwatch I/O performance monitor instance %I
Documentation=man:iotwatch(1)
PartOf=iotwatch.target
#Requisite=
After=nss-user-lookup.target time-sync.target paths.target
#Before=
[Service]
Type=forking
Environment="IOTWATCH_INSTANCE=%i"
RuntimeDirectory=/var/run/iotwatch/%i
WorkingDirectory=/var/run/iotwatch/%i
ExecStart=/usr/lib/iotwatch/iotwatch-service-wrapper %i start
#ExecReload=/usr/...
ExecStop=/usr/lib/iotwatch/iotwatch-service-wrapper %i stop
#SyslogIdentifier=%p-%i
TimeoutStopSec=30
PidFile=/var/run/iotwatch/iotwatch-%i.pid
Restart=always
RestartPreventExitStatus=5 6
StartLimitBurst=1
[Install]
WantedBy=multi-user.target
那么启动后的状态:
h02:~ # systemctl start iotwatch@VAR -l
h02:~ # systemctl status iotwatch@VAR -l
● [email protected] - iotwatch I/O performance monitor instance VAR
Loaded: loaded (/usr/lib/systemd/system/[email protected]; disabled; vendor preset: disabled)
Active: active (running) since Thu 2019-04-25 11:40:47 CEST; 6s ago
Docs: man:iotwatch(1)
Process: 12907 ExecStart=/usr/lib/iotwatch/iotwatch-service-wrapper %i start (code=exited, status=0/SUCCESS)
Main PID: 12920 (iotwatch-VAR)
Tasks: 4 (limit: 512)
CGroup: /system.slice/system-iotwatch.slice/[email protected]
└─12920 ./iotwatch-VAR -l /var/log/iotwatch/VAR/iotwatch-VAR.log -m I -p /var/run/iotwatch/VAR/iotwatch-VAR.pid -d1 -a0.00 -b512 -i4 -sD -t0.5 -TX=0.25:0.50,A=0.025:0.05 -OR -OS:T=F75,S:M=O52,N:3.29/60,Q:C=120,P:nagios.nagios=0664 /dev/sys/var
Apr 25 11:40:47 h02 systemd[1]: Starting iotwatch I/O performance monitor instance VAR...
Apr 25 11:40:47 h02 iotwatch-service-wrapper[12907]: Starting iotwatch VAR
Apr 25 11:40:47 h02 systemd[1]: Started iotwatch I/O performance monitor instance VAR.
h02:~ # ll /var/run/iotwatch/VAR/iotwatch-VAR.pid
-rw-r--r-- 1 root root 6 Apr 25 11:40 /var/run/iotwatch/VAR/iotwatch-VAR.pid
最后是停止后的状态:
h02:~ # systemctl stop iotwatch@VAR -l
h02:~ # systemctl status iotwatch@VAR -l
● [email protected] - iotwatch I/O performance monitor instance VAR
Loaded: loaded (/usr/lib/systemd/system/[email protected]; disabled; vendor preset: disabled)
Active: inactive (dead)
Docs: man:iotwatch(1)
Apr 25 11:40:47 h02 systemd[1]: Started iotwatch I/O performance monitor instance VAR.
Apr 25 11:41:24 h02 systemd[1]: Stopping iotwatch I/O performance monitor instance VAR...
Apr 25 11:41:24 h02 iotwatch-service-wrapper[12962]: Stopping iotwatch VAR
Apr 25 11:41:27 h02 systemd[1]: Stopped iotwatch I/O performance monitor instance VAR.
Apr 25 11:41:27 h02 systemd[1]: [/usr/lib/systemd/system/[email protected]:12] Runtime directory is not valid, ignoring assignment: /var/run/iotwatch/%i
Apr 25 11:41:27 h02 systemd[1]: [/usr/lib/systemd/system/[email protected]:19] Unknown lvalue 'PidFile' in section 'Service'
Apr 25 11:41:27 h02 systemd[1]: [/usr/lib/systemd/system/[email protected]:12] Runtime directory is not valid, ignoring assignment: /var/run/iotwatch/%i
Apr 25 11:41:27 h02 systemd[1]: [/usr/lib/systemd/system/[email protected]:19] Unknown lvalue 'PidFile' in section 'Service'
Apr 25 11:41:32 h02 systemd[1]: [/usr/lib/systemd/system/[email protected]:12] Runtime directory is not valid, ignoring assignment: /var/run/iotwatch/%i
Apr 25 11:41:32 h02 systemd[1]: [/usr/lib/systemd/system/[email protected]:19] Unknown lvalue 'PidFile' in section 'Service'
如何修复服务文件以避免出现这些消息?
由于我对systemd
ssystem
和user
units 或 services 背后的想法是什么感到困惑,所以我想寻求解释。
具体来说,我认为系统单位是针对供应商操作系统的一部分的单位,而用户单位是针对客户的本地附加组件。
但似乎用户单位的处理方式不同systemd
(例如systemctl daemon-reload
,不影响任何用户单位,而手册页声称:“重新加载 systemd 管理器配置。这将重新运行所有生成器(请参阅 systemd.generator(7)),重新加载所有单元文件,并重新创建整个依赖关系树。 ”),所以它不仅仅是一些组织结构,而是一个真正的语义结构。
我已经使用启动和停止守护程序的包装脚本将我的 LSB 控制的守护程序移植到 systemd。我的 systemd(多实例)服务文件使用Type=forking
、ExecStart=...
、ExecStop=...
和PIDFile=...
.
启动时,在 systemd 中一切看起来都正常,但停止似乎总是失败。由于在 LSB 环境中这工作正常,我怀疑 systemd (228) 做了一些坏事。
实际上我发现在成功启动后PIDfile 消失了,所以我的包装脚本返回退出代码 1(因为在预期的地方找不到 PID 文件)。
那么systemd真的会删除PID文件吗?副作用是,在包装脚本返回错误后,systemd 似乎很难杀死我的守护进程。