这可能是一个可能的错误,但它已经困扰了我几天了。
apt-get upgrade
和之间的区别apt-get dist-upgrade
现在已经众所周知且已经确立,即升级安装/升级而dist-upgrade
能够安装/删除/升级如果软件包删除恰好是安装或升级另一个软件包所必需的。使用类似的东西可以很容易地发现包的差异
(以下是一种快速而肮脏的方法,需要在终端中输入 sudo 密码以进行复制粘贴。此外,由于我自己修补了几个软件包和驱动程序,我需要保留功能,因此我将 OR 包含在在awk
提取只有那些安装和那些要升级,而不是那些被列为必须保持回来,但下面应该工作,即使这些行不存在于你的apt upgrade
输出):
$echo -e 'n' | sudo apt-get dist-upgrade | awk '
/be installed|be upgraded/{f=1;next}; /not upgraded|kept back/{f=0}f' | awk '
BEGIN {RS=" ";} {print $0}
' | grep . > apt_get_dist_list
$echo -e 'n' | sudo apt-get upgrade | awk '
/be installed|be upgraded/{f=1;next}; /not upgraded|kept back/{f=0}f' | awk '
BEGIN {RS=" ";} {print $0}
' | grep …
Run Code Online (Sandbox Code Playgroud) 在最近一次apt full-upgrade
包括内核更新之后,我现在两次遇到了一个相当奇怪的问题,更重要的是,我一生都无法弄清楚我找到的唯一解决方案如何以及为什么能够真正修复它。
现在有两次,当我在观看视频时闲置 20-30 分钟时,我的鼠标(Logitech M510,一直工作完美,我几乎可以肯定不是问题所在,正如我将在下面描述的那样)已经禁用了指针,同时保持按钮功能。
1.电池已更换,鼠标已关闭并重新打开多次,这两者都没有任何区别。
2.同样,移除 USB 统一接收器也无法解决问题。
3. dmesg
不记录任何错误、警告。当接收器重新插入时,输出与以前一样正常:
usb 4-1.1: USB disconnect, device number 3
usb 4-1.1: new full-speed USB device number 5 using ehci-pci
usb 4-1.1: New USB device found, idVendor=046d, idProduct=c52b, bcdDevice=24.07
usb 4-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 4-1.1: Product: USB Receiver
usb 4-1.1: Manufacturer: Logitech
logitech-djreceiver 0003:046D:C52B.0008: hiddev0,hidraw0: USB HID v1.11 Device [Logitech USB Receiver] on usb-0000:00:1d.0-1.1/input2
input: Logitech M510 as /devices/pci0000:00/0000:00:1d.0/usb4/4-1/4-1.1/4-1.1:1.2/0003:046D:C52B.0008/0003:046D:4051.0009/input/input38
logitech-hidpp-device 0003:046D:4051.0009: …
Run Code Online (Sandbox Code Playgroud) 我的基于 Debian 的发行版(antix)上没有 systemd,而且也没有桌面环境。当盖子关闭时,如何使我的笔记本电脑仅显示空白(或禁用)屏幕,而不是暂停并保持暂停按钮正常工作
我们知道,除了SIGKILL
和之外SIGSTOP
,程序还可以拦截 IPC 信号,并运行其内部处理程序来绕过默认处理程序的操作。
我至少能想到一个利用SIGINT
信号执行此操作的充分理由。
我还可以想到恶意软件可能捕获并阻止 SIGINT 的一个很好的理由:
即延长进程的执行时间。对于大多数用户来说,Ctrl+C是大多数终端用户的键盘快捷键,有很多人不知道Ctrl+ Z(SIGTSTP
它只会停止进程,保留在终端中jobs
),更不用说Ctrl+了\,它发送SIGQUIT
并创建一个核心转储。
如果Ctrl+C被捕获并被阻止,此类用户可能会尝试打开另一个终端窗口,并运行以下内容:
ps aux | grep [process name]
Run Code Online (Sandbox Code Playgroud)
获取进程PID,并执行SIGKILL
kill -9 [$PID]
Run Code Online (Sandbox Code Playgroud)同样,连接到远程计算机上的终端会话的用户将尝试与新的终端会话建立第二个连接,并通过类似的进程/PID 搜索来终止罪魁祸首。显然,这种策略可能只会延长进程运行时间很短一段时间,但即使使用 10MB/s 高带宽连接的文件传输过程额外 3 分钟,也会传输近 2 GB 的额外数据,因此肯定有一些优点它。
然而,最近我注意到——也许只是因为我开始关注它——有些程序似乎属于另一个子集。
这些程序是开源的,并且对软件包进行了足够的维护和检查,隐藏主要的恶意软件代码似乎不太可能。
vim
它们不像其他文本编辑器那样控制键盘输入
他们有内部处理程序来捕获 SIGINT 并完全忽略它。没有最终的进程终止,并且据所知,没有尝试最后的关键任务。
我的问题:
进程出于合法目的可能选择拦截但完全丢弃 SIGINT 是否有可能的原因?
换句话说,是否有充分的理由(从代码或系统的角度来看)或情况,捕获并忽略 SIGINT 比其已知的默认操作(终止正在运行的进程)更有利?