Running needrestart on Proxmox (Debian), installed from packages. needrestart itself is being wrapped by another script that periodically calls it to check on the server status.
I don't know exactly what circumstance causes this - it appears to be some ephemeral condition that is only present when a run of needrestart coincides with a periodic timer event within pvestatd. The output behavior (reporting a restart of pvestatd is needed) is the same on both servers, but it seems to have gotten there via a slightly different set of files.
needrestart -v -b:
[server 1]
[main] eval /etc/needrestart/needrestart.conf
[main] needrestart v3.11
[main] running in root mode
[main] systemd detected
NEEDRESTART-VER: 3.11
[Core] #854 is a NeedRestart::Interp::Python
[Python] #854: source=/usr/bin/ceph-crash
[Core] #1724 is a NeedRestart::Interp::Perl
[Perl] #1724: could not get a source file, skipping
[Core] #2092 is a NeedRestart::Interp::Perl
[Perl] #2092: could not get a source file, skipping
[Core] #2094 is a NeedRestart::Interp::Perl
[Perl] #2094: could not get a source file, skipping
[Core] #2228 is a NeedRestart::Interp::Perl
[Perl] #2228: could not get a source file, skipping
[Core] #2405 is a NeedRestart::Interp::Perl
[Perl] #2405: could not get a source file, skipping
[Core] #3000 is a NeedRestart::Interp::Perl
[Perl] #3000: could not get a source file, skipping
[Core] #3197 is a NeedRestart::Interp::Perl
[Perl] #3197: could not get a source file, skipping
[Core] #3201 is a NeedRestart::Interp::Perl
[Perl] #3201: could not get a source file, skipping
[Core] #3256 is a NeedRestart::Interp::Perl
[Perl] #3256: could not get a source file, skipping
[Core] #48539 is a NeedRestart::Interp::Perl
[Perl] #48539: could not get a source file, skipping
[Core] #122400 is a NeedRestart::Interp::Perl
[Perl] #122400: could not get a source file, skipping
[Core] #204412 is a NeedRestart::Interp::Perl
[Perl] #204412: could not get a source file, skipping
[Core] #232888 is a NeedRestart::Interp::Perl
[Perl] #232888: could not get a source file, skipping
[Core] #233144 is a NeedRestart::Interp::Perl
[Perl] #233144: could not get a source file, skipping
[Core] #245494 is a NeedRestart::Interp::Python
[Python] #245494: source=/usr/share/ifupdown2/__main__.py
[Core] #245494 uses obsolete script file(s):
[Core] #245494 /usr/lib/python3.13/io.py
[Core] #245494 /usr/lib/python3.13/bz2.py
[Core] #245494 /usr/lib/python3.13/argparse.py
[Core] #245494 /usr/lib/python3.13/dis.py
[Core] #245494 /usr/share/ifupdown2/__main__.py
[Core] #245494 /usr/lib/python3.13/textwrap.py
[Core] #245494 /usr/lib/python3.13/gettext.py
[Core] #245494 /usr/lib/python3.13/types.py
[Core] #245494 /usr/lib/python3.13/operator.py
[Core] #245494 /usr/lib/python3.13/warnings.py
[Core] #245494 /usr/lib/python3.13/abc.py
[Core] #245494 /usr/lib/python3.13/stat.py
[Core] #245494 /usr/lib/python3.13/posixpath.py
[Core] #245494 /usr/lib/python3.13/typing.py
[Core] #245494 /usr/lib/python3.13/functools.py
[Core] #245494 /usr/lib/python3.13/lzma.py
[Core] #245494 /usr/lib/python3.13/opcode.py
[Core] #245494 /usr/lib/python3.13/_py_abc.py
[Core] #245494 /usr/lib/python3.13/inspect.py
[Core] #245494 /usr/lib/python3.13/genericpath.py
[Core] #245494 /usr/lib/python3.13/tarfile.py
[Core] #245494 /usr/lib/python3.13/weakref.py
[Core] #245494 /usr/lib/python3.13/os.py
[Core] #245494 /usr/lib/python3.13/_collections_abc.py
[Core] #245494 /usr/lib/python3.13/gzip.py
[Core] #245494 /usr/lib/python3.13/fnmatch.py
[Core] #245494 /usr/lib/python3.13/token.py
[Core] #245494 /usr/lib/python3.13/shutil.py
[Core] #245494 /usr/lib/python3.13/copyreg.py
[Core] #245494 /usr/lib/python3.13/keyword.py
[Core] #245494 /usr/lib/python3.13/_weakrefset.py
[Core] #245494 /usr/lib/python3.13/copy.py
[Core] #245494 /usr/lib/python3.13/struct.py
[Core] #245494 /usr/lib/python3.13/_compression.py
[Core] #245494 /usr/lib/python3.13/encodings/aliases.py
[Core] #245494 /usr/lib/python3.13/locale.py
[main] #245494 is a child of #2094
[Core] #4047916 is a NeedRestart::Interp::Perl
[Perl] #4047916: could not get a source file, skipping
[main] #2094 exe => /usr/bin/perl
[Core] #2094 is a NeedRestart::Interp::Perl
[Perl] #2094: could not get a source file, skipping
[Core] #2094 source is UNKNOWN
[main] #2094 is pvestatd.service
[ucode] using NeedRestart::uCode::Intel
[ucode] using NeedRestart::uCode::AMD
[uCode/Intel] #0 current revision: 0x00bc
+ iucode_tool --scan-system
+ grep -oE [^[:space:]]+$
+ sig=0x000806c1
+ [ -r /sys/devices/system/cpu/cpu0/microcode/processor_flags ]
+ cat /sys/devices/system/cpu/cpu0/microcode/processor_flags
+ filter=-s 0x000806c1,0x80
+ test -r /etc/needrestart/iucode.sh
+ . /etc/needrestart/iucode.sh
+ type bsdtar
+ IUCODE_TOOL_EXTRA_OPTIONS=
+ test -r /etc/default/intel-microcode
+ . /etc/default/intel-microcode
+ test = no
+ find /usr/share/misc -maxdepth 1 -type f -name intel-microcode* -perm /u+r
+ [ -n ]
+ iucode_tool -l -s 0x000806c1,0x80 --ignore-broken -tb /lib/firmware/intel-ucode
+ grep 0x000806c1
[uCode/Intel] #0 available revision: 0x00bc
[uCode/AMD] #0 cpu vendor id mismatch
[Kernel] Linux: kernel release 6.17.13-2-pve, kernel version #1 SMP PREEMPT_DYNAMIC PMX 6.17.13-2 (2026-03-13T08:06Z)
Failed to load NeedRestart::Kernel::kFreeBSD: [Kernel/kFreeBSD] Not running on GNU/kFreeBSD!
[Kernel/Linux] /boot/vmlinuz-6.17.13-2-pve => 6.17.13-2-pve (build@proxmox) #1 SMP PREEMPT_DYNAMIC PMX 6.17.13-2 (2026-03-13T08:06Z) [6.17.13-2-pve]*
[Kernel/Linux] /boot/vmlinuz-6.17.2-1-pve => 6.17.2-1-pve (build@proxmox) #1 SMP PREEMPT_DYNAMIC PMX 6.17.2-1 (2025-10-21T11:55Z) [6.17.2-1-pve]
[Kernel/Linux] /boot/vmlinuz-6.14.11-6-pve => 6.14.11-6-pve (build@proxmox) #1 SMP PREEMPT_DYNAMIC PMX 6.14.11-6 (2026-03-13T08:44Z) [6.14.11-6-pve]
[Kernel/Linux] /boot/vmlinuz-6.14.11-4-pve => 6.14.11-4-pve (build@proxmox) #1 SMP PREEMPT_DYNAMIC PMX 6.14.11-4 (2025-10-10T08:04Z) [6.14.11-4-pve]
[Kernel/Linux] /boot/vmlinuz-6.14.11-3-pve => 6.14.11-3-pve (build@proxmox) #1 SMP PREEMPT_DYNAMIC PMX 6.14.11-3 (2025-09-22T10:13Z) [6.14.11-3-pve]
[Kernel/Linux] /boot/vmlinuz-6.14.8-2-pve => 6.14.8-2-pve (build@proxmox) #1 SMP PREEMPT_DYNAMIC PMX 6.14.8-2 (2025-07-22T10:04Z) [6.14.8-2-pve]
[Kernel/Linux] /boot/vmlinuz-6.8.12-13-pve => 6.8.12-13-pve (build@proxmox) #1 SMP PREEMPT_DYNAMIC PMX 6.8.12-13 (2025-07-22T10:00Z) [6.8.12-13-pve]
[Kernel/Linux] /boot/vmlinuz-6.2.16-20-pve => 6.2.16-20-pve (build@proxmox) #1 SMP PREEMPT_DYNAMIC PMX 6.2.16-20 (2023-12-01T13:17Z) [6.2.16-20-pve]
[Kernel/Linux] /boot/vmlinuz-6.2.16-3-pve => 6.2.16-3-pve (tom@sbuild) #1 SMP PREEMPT_DYNAMIC PVE 6.2.16-3 (2023-06-17T05:58Z) [6.2.16-3-pve]
[Kernel/Linux] Expected linux version: 6.17.13-2-pve
NEEDRESTART-KCUR: 6.17.13-2-pve
NEEDRESTART-KEXP: 6.17.13-2-pve
NEEDRESTART-KSTA: 1
NEEDRESTART-UCSTA: 1
NEEDRESTART-UCCUR: 0x00bc
NEEDRESTART-UCEXP: 0x00bc
NEEDRESTART-SVC: pvestatd.service
[server 2]
[main] eval /etc/needrestart/needrestart.conf
[main] needrestart v3.11
[main] running in root mode
[main] systemd detected
NEEDRESTART-VER: 3.11
[Core] #856 is a NeedRestart::Interp::Python
[Python] #856: source=/usr/bin/ceph-crash
[Core] #2122 is a NeedRestart::Interp::Perl
[Perl] #2122: could not get a source file, skipping
[Core] #2159 is a NeedRestart::Interp::Perl
[Perl] #2159: could not get a source file, skipping
[Core] #2220 is a NeedRestart::Interp::Perl
[Perl] #2220: could not get a source file, skipping
[Core] #2234 is a NeedRestart::Interp::Perl
[Perl] #2234: could not get a source file, skipping
[Core] #2706 is a NeedRestart::Interp::Perl
[Perl] #2706: could not get a source file, skipping
[Core] #2733 is a NeedRestart::Interp::Perl
[Perl] #2733: could not get a source file, skipping
[Core] #2883 is a NeedRestart::Interp::Perl
[Perl] #2883: could not get a source file, skipping
[Core] #3294 is a NeedRestart::Interp::Perl
[Perl] #3294: could not get a source file, skipping
[Core] #5854 is a NeedRestart::Interp::Python
[Python] #5854: process cwd is unreachable
[Core] #315872 is a NeedRestart::Interp::Perl
[Perl] #315872: could not get a source file, skipping
[Core] #356723 is a NeedRestart::Interp::Perl
[Perl] #356723: could not get a source file, skipping
[Core] #441775 is a NeedRestart::Interp::Perl
[Perl] #441775: could not get a source file, skipping
[Core] #443021 is a NeedRestart::Interp::Perl
[Perl] #443021: could not get a source file, skipping
[Core] #456865 is a NeedRestart::Interp::Perl
[Perl] #456865: could not get a source file, skipping
[Core] #457863 is a NeedRestart::Interp::Perl
[Perl] #457863: could not get a source file, skipping
[Core] #461479 is a NeedRestart::Interp::Perl
[Perl] #461479: could not get a source file, skipping
[Core] #475459 is a NeedRestart::Interp::Python
[Python] #475459: source=/usr/share/ifupdown2/__main__.py
[Core] #475459 uses obsolete script file(s):
[Core] #475459 /usr/lib/python3.13/quopri.py
[Core] #475459 /usr/lib/python3.13/codecs.py
[Core] #475459 /usr/lib/python3.13/_collections_abc.py
[Core] #475459 /usr/lib/python3.13/doctest.py
[Core] #475459 /usr/lib/python3.13/decimal.py
[Core] #475459 /usr/lib/python3.13/pkgutil.py
[Core] #475459 /usr/lib/python3.13/abc.py
[Core] #475459 /usr/lib/python3.13/importlib/_bootstrap_external.py
[Core] #475459 /usr/lib/python3.13/gzip.py
[Core] #475459 /usr/lib/python3.13/importlib/machinery.py
[Core] #475459 /usr/lib/python3.13/base64.py
[Core] #475459 /usr/lib/python3.13/keyword.py
[Core] #475459 /usr/lib/python3.13/typing.py
[Core] #475459 /usr/lib/python3.13/_pyrepl/pager.py
[Core] #475459 /usr/lib/python3.13/pickle.py
[Core] #475459 /usr/lib/python3.13/email/_encoded_words.py
[Core] #475459 /usr/lib/python3.13/_compression.py
[Core] #475459 /usr/lib/python3.13/datetime.py
[Core] #475459 /usr/lib/python3.13/contextvars.py
[Core] #475459 /usr/lib/python3.13/codeop.py
[Core] #475459 /usr/lib/python3.13/encodings/aliases.py
[Core] #475459 /usr/lib/python3.13/ntpath.py
[Core] #475459 /usr/lib/python3.13/cmd.py
[Core] #475459 /usr/lib/python3.13/dis.py
[Core] #475459 /usr/lib/python3.13/shutil.py
[Core] #475459 /usr/lib/python3.13/pprint.py
[Core] #475459 /usr/lib/python3.13/token.py
[Core] #475459 /usr/lib/python3.13/email/base64mime.py
[Core] #475459 /usr/lib/python3.13/_pydecimal.py
[Core] #475459 /usr/lib/python3.13/dataclasses.py
[Core] #475459 /usr/lib/python3.13/fractions.py
[Core] #475459 /usr/lib/python3.13/types.py
[Core] #475459 /usr/lib/python3.13/string.py
[Core] #475459 /usr/lib/python3.13/io.py
[Core] #475459 /usr/lib/python3.13/operator.py
[Core] #475459 /usr/lib/python3.13/_opcode_metadata.py
[Core] #475459 /usr/lib/python3.13/_compat_pickle.py
[Core] #475459 /usr/lib/python3.13/tarfile.py
[Core] #475459 /usr/lib/python3.13/email/_policybase.py
[Core] #475459 /usr/lib/python3.13/fnmatch.py
[Core] #475459 /usr/lib/python3.13/_pydatetime.py
[Core] #475459 /usr/lib/python3.13/signal.py
[Core] #475459 /usr/lib/python3.13/reprlib.py
[Core] #475459 /usr/lib/python3.13/locale.py
[Core] #475459 /usr/lib/python3.13/numbers.py
[Core] #475459 /usr/share/ifupdown2/__main__.py
[Core] #475459 /usr/lib/python3.13/getopt.py
[Core] #475459 /usr/lib/python3.13/bz2.py
[Core] #475459 /usr/lib/python3.13/pdb.py
[Core] #475459 /usr/lib/python3.13/opcode.py
[Core] #475459 /usr/lib/python3.13/tempfile.py
[Core] #475459 /usr/lib/python3.13/argparse.py
[Core] #475459 /usr/lib/python3.13/email/charset.py
[Core] #475459 /usr/lib/python3.13/importlib/util.py
[Core] #475459 /usr/lib/python3.13/gettext.py
[Core] #475459 /usr/lib/python3.13/socket.py
[Core] #475459 /usr/lib/python3.13/inspect.py
[Core] #475459 /usr/lib/python3.13/copy.py
[Core] #475459 /usr/lib/python3.13/traceback.py
[Core] #475459 /usr/lib/python3.13/ast.py
[Core] #475459 /usr/lib/python3.13/os.py
[Core] #475459 /usr/lib/python3.13/_py_abc.py
[Core] #475459 /usr/lib/python3.13/random.py
[Core] #475459 /usr/lib/python3.13/statistics.py
[Core] #475459 /usr/lib/python3.13/stat.py
[Core] #475459 /usr/lib/python3.13/urllib/parse.py
[Core] #475459 /usr/lib/python3.13/subprocess.py
[Core] #475459 /usr/lib/python3.13/importlib/readers.py
[Core] #475459 /usr/lib/python3.13/bisect.py
[Core] #475459 /usr/lib/python3.13/textwrap.py
[Core] #475459 /usr/lib/python3.13/lzma.py
[Core] #475459 /usr/lib/python3.13/weakref.py
[Core] #475459 /usr/lib/python3.13/enum.py
[Core] #475459 /usr/lib/python3.13/linecache.py
[Core] #475459 /usr/lib/python3.13/email/quoprimime.py
[Core] #475459 /usr/lib/python3.13/pydoc.py
[Core] #475459 /usr/lib/python3.13/email/message.py
[Core] #475459 /usr/lib/python3.13/runpy.py
[Core] #475459 /usr/lib/python3.13/rlcompleter.py
[Core] #475459 /usr/lib/python3.13/tty.py
[Core] #475459 /usr/lib/python3.13/tokenize.py
[Core] #475459 /usr/lib/python3.13/__future__.py
[Core] #475459 /usr/lib/python3.13/ipaddress.py
[Core] #475459 /usr/lib/python3.13/copyreg.py
[Core] #475459 /usr/lib/python3.13/tracemalloc.py
[Core] #475459 /usr/lib/python3.13/contextlib.py
[Core] #475459 /usr/lib/python3.13/selectors.py
[Core] #475459 /usr/lib/python3.13/warnings.py
[Core] #475459 /usr/lib/python3.13/struct.py
[Core] #475459 /usr/lib/python3.13/_colorize.py
[Core] #475459 /usr/lib/python3.13/shlex.py
[Core] #475459 /usr/lib/python3.13/posixpath.py
[Core] #475459 /usr/lib/python3.13/_threading_local.py
[Core] #475459 /usr/lib/python3.13/threading.py
[Core] #475459 /usr/lib/python3.13/zipimport.py
[Core] #475459 /usr/lib/python3.13/email/encoders.py
[Core] #475459 /usr/lib/python3.13/genericpath.py
[Core] #475459 /usr/lib/python3.13/_weakrefset.py
[Core] #475459 /usr/lib/python3.13/email/utils.py
[Core] #475459 /usr/lib/python3.13/hashlib.py
[Core] #475459 /usr/lib/python3.13/functools.py
[main] #475459 is a child of #2159
[main] #2159 exe => /usr/bin/perl
[Core] #2159 is a NeedRestart::Interp::Perl
[Perl] #2159: could not get a source file, skipping
[Core] #2159 source is UNKNOWN
[main] #2159 is pvestatd.service
[ucode] using NeedRestart::uCode::AMD
[ucode] using NeedRestart::uCode::Intel
[uCode/AMD] #0 cpu vendor id mismatch
[uCode/Intel] #0 current revision: 0x00bc
+ grep -oE [^[:space:]]+$
+ iucode_tool --scan-system
+ sig=0x000806c1
+ [ -r /sys/devices/system/cpu/cpu0/microcode/processor_flags ]
+ cat /sys/devices/system/cpu/cpu0/microcode/processor_flags
+ filter=-s 0x000806c1,0x80
+ test -r /etc/needrestart/iucode.sh
+ . /etc/needrestart/iucode.sh
+ type bsdtar
+ IUCODE_TOOL_EXTRA_OPTIONS=
+ test -r /etc/default/intel-microcode
+ . /etc/default/intel-microcode
+ test = no
+ find /usr/share/misc -maxdepth 1 -type f -name intel-microcode* -perm /u+r
+ [ -n ]
+ iucode_tool -l -s 0x000806c1,0x80 --ignore-broken -tb /lib/firmware/intel-ucode
+ grep 0x000806c1
[uCode/Intel] #0 available revision: 0x00bc
[Kernel] Linux: kernel release 6.17.13-2-pve, kernel version #1 SMP PREEMPT_DYNAMIC PMX 6.17.13-2 (2026-03-13T08:06Z)
[Kernel/Linux] /boot/vmlinuz-6.17.13-2-pve => 6.17.13-2-pve (build@proxmox) #1 SMP PREEMPT_DYNAMIC PMX 6.17.13-2 (2026-03-13T08:06Z) [6.17.13-2-pve]*
[Kernel/Linux] /boot/vmlinuz-6.17.2-1-pve => 6.17.2-1-pve (build@proxmox) #1 SMP PREEMPT_DYNAMIC PMX 6.17.2-1 (2025-10-21T11:55Z) [6.17.2-1-pve]
[Kernel/Linux] /boot/vmlinuz-6.14.11-6-pve => 6.14.11-6-pve (build@proxmox) #1 SMP PREEMPT_DYNAMIC PMX 6.14.11-6 (2026-03-13T08:44Z) [6.14.11-6-pve]
[Kernel/Linux] /boot/vmlinuz-6.14.11-4-pve => 6.14.11-4-pve (build@proxmox) #1 SMP PREEMPT_DYNAMIC PMX 6.14.11-4 (2025-10-10T08:04Z) [6.14.11-4-pve]
[Kernel/Linux] /boot/vmlinuz-6.14.11-3-pve => 6.14.11-3-pve (build@proxmox) #1 SMP PREEMPT_DYNAMIC PMX 6.14.11-3 (2025-09-22T10:13Z) [6.14.11-3-pve]
[Kernel/Linux] /boot/vmlinuz-6.8.12-13-pve => 6.8.12-13-pve (build@proxmox) #1 SMP PREEMPT_DYNAMIC PMX 6.8.12-13 (2025-07-22T10:00Z) [6.8.12-13-pve]
[Kernel/Linux] /boot/vmlinuz-6.8.12-4-pve => 6.8.12-4-pve (build@proxmox) #1 SMP PREEMPT_DYNAMIC PMX 6.8.12-4 (2024-11-06T15:04Z) [6.8.12-4-pve]
[Kernel/Linux] Expected linux version: 6.17.13-2-pve
NEEDRESTART-KCUR: 6.17.13-2-pve
NEEDRESTART-KEXP: 6.17.13-2-pve
NEEDRESTART-KSTA: 1
NEEDRESTART-UCSTA: 1
NEEDRESTART-UCCUR: 0x00bc
NEEDRESTART-UCEXP: 0x00bc
NEEDRESTART-SVC: pvestatd.service
Spot checking a few of those files, they're timestamped almost a year in the past, so I don't think they are changing on disk
Running
needrestarton Proxmox (Debian), installed from packages.needrestartitself is being wrapped by another script that periodically calls it to check on the server status.I don't know exactly what circumstance causes this - it appears to be some ephemeral condition that is only present when a run of
needrestartcoincides with a periodic timer event withinpvestatd. The output behavior (reporting a restart ofpvestatdis needed) is the same on both servers, but it seems to have gotten there via a slightly different set of files.needrestart -v -b:[server 1]
[server 2]
Spot checking a few of those files, they're timestamped almost a year in the past, so I don't think they are changing on disk