배경: 마스터 노드와 여러 컴퓨팅 노드로 구성된 Slurm 클러스터를 구축하고 있으며 모두 PXE를 통해 부팅됩니다. 처음에는 호스트 이름이 없으며 다른 하드웨어에서 실행될 수 있으므로 NIC의 이름을 예측할 수 없으므로 구성되지 않습니다 /etc/network/interfaces. 시작하는 동안 호스트 이름을 다음과 같이 설정했습니다. root@zorn:/lib/systemd/system# cat /lib/systemd/system/sethostname.service
[Unit]
Wants=network-pre.target
Before=network-pre.target
After=local-fs.target
DefaultDependencies=false
[Service]
Type=oneshot
ExecStart=/usr/bin/sethostname
RemainAfterExit=yes
[Install]
WantedBy=network.target
/usr/bin/sethostname을 사용하십시오: root@zorn:/lib/systemd/system# cat /usr/bin/sethostname
#!/usr/bin/bash
hnm=node$(/usr/bin/cat /sys/class/net/*/address | /usr/bin/head -1 | /usr/bin/sed 's/://g')
echo $hnm > /proc/sys/kernel/hostname
echo $hnm > /etc/hostname
루트 파일 시스템은 /etc/hostname로컬 디스크의 파일에 대한 심볼릭 링크와 마찬가지로 NFS를 통해 마운트된 R/O입니다. 지금까지는 디스크 없는 노드를 시작할 때 호스트 이름이 다음과 같이 설정되었습니다 node6c2408faee43. root@node080027aea419:~# hostnamectl
Static hostname: node080027aea419
Icon name: computer-vm
Chassis: vm
以前に検索した結果、これはできないという回答が出たようですが、私がLinuxの専門家ではないので、それでも聞いてみたかったです。毎秒デスクトップ通知を開始するnodejsで作成された小さなアプリがあります。 import notifier from 'node-notifier'
import {CronJob} from 'cron';
/* Create a cron job that send a desktop notification every second */
const job = new CronJob('* * * * * *', () => {
notifier.notify({
title: 'My notification',
message: 'Hello, there!',
});
}, null, true, 'America/Los_Angeles');
job.start()
私が走るとき、これはうまくいきますnpm run start。 systemdサービスを使用して実行したいと思います。 [Unit]
Description=should run node app which launch a desktop notification
After=network.target
[Service]
Environment="DISPLAY=:0" "XAUTHORITY=/home/myuser/.Xauthority"
Type=simple
User=myuser
ExecStart=/home/myuser/.nvm/versions/node/v16.13.1/bin/node /home/myuser/notify_send/notify_node/build/index.js
Restart=on-failure
[Install]
WantedBy=multi-user.target
サービスを開始してから数秒後、ステータスコマンドは次のように表示されます。 ● runjs.service - should run node app which launch a desktop notification
Loaded: loaded (/etc/systemd/system/runjs.service; disabled; vendor preset: enabled)
Active: active (running) since Sun 2022-12-04 17:47:40 CET; 22s ago
Main PID: 5606 (node)
Tasks: 20 (limit: 18651)
Memory: 18.1M
CGroup: /system.slice/runjs.service
├─5606 /home/myuser/.nvm/versions/node/v16.13.1/bin/node /home/myuser/notify_send/notify_node/build/index.js
├─5633 /bin/sh -c notify-send "My notification" "Hello, there!" --expire-time "10000"
├─5634 notify-send My notification Hello, there! --expire-time 10000
├─5639 dbus-launch --autolaunch=017e96ffe51b466384d899f21cbecdc5 --binary-syntax --close-stderr
├─5640 /usr/bin/dbus-daemon --syslog-only --fork --print-pid 5 --print-address 7 --session
├─5642 /usr/bin/dbus-daemon --syslog-only --fork --print-pid 5 --print-address 7 --session
└─5643 /usr/bin/plasma_waitforname org.freedesktop.Notifications
dic 04 17:47:40 slimbook systemd[1]: Started should run node app which launch a desktop notification.
dic 04 17:48:00 slimbook dbus-daemon[5640]: [session uid=1000 pid=5638] AppArmor D-Bus mediation is enabled
dic 04 17:48:00 slimbook dbus-daemon[5640]: [session uid=1000 pid=5638] Activating service name='org.freedesktop.Notifications' requested by ':1.0>
ただし、サービスの実行中はデスクトップ通知は開始されません。 よろしくお願いします。 編集する @edgar-magallonが提案した変更を適用したら、追加情報を追加してください。 $ sudo systemctl status runjs.service
● runjs.service - should run node app which launch a desktop notification
Loaded: loaded (/etc/systemd/system/runjs.service; disabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Sat 2022-12-24 00:26:59 CET; 4s ago
Process: 3281 ExecStart=/home/user/notify_send/notify_node/build/runApp (code=exited, status=127)
Main PID: 3281 (code=exited, status=127)
dic 24 00:26:59 slimbook systemd[1]: runjs.service: Scheduled restart job, restart counter is at 5.
dic 24 00:26:59 slimbook systemd[1]: Stopped should run node app which launch a desktop notification.
dic 24 00:26:59 slimbook systemd[1]: runjs.service: Start request repeated too quickly.
dic 24 00:26:59 slimbook systemd[1]: runjs.service: Failed with result 'exit-code'.
dic 24 00:26:59 slimbook systemd[1]: Failed to start should run node app which launch a desktop notification.
そしてログ: $ sudo journalctl -xeu runjs.service
-- Support: http://www.ubuntu.com/support
-- Support: http://www.ubuntu.com/support
--
-- The unit runjs.service has entered the 'failed' state with result 'exit-code'.
dic 24 00:26:59 slimbook systemd[1]: runjs.service: Scheduled restart job, restart counter is at 5.
-- Subject: Automatic restarting of a unit has been scheduled
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- Automatic restarting of the unit runjs.service has been scheduled, as the result for
-- the configured Restart= setting for the unit.
dic 24 00:26:59 slimbook systemd[1]: Stopped should run node app which launch a desktop notification.
-- Subject: A stop job for unit runjs.service has finished
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- A stop job for unit runjs.service has finished.
--
-- The job identifier is 2072 and the job result is done.
dic 24 00:26:59 slimbook systemd[1]: runjs.service: Start request repeated too quickly.
dic 24 00:26:59 slimbook systemd[1]: runjs.service: Failed with result 'exit-code'.
-- Subject: Unit failed
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- The unit runjs.service has entered the 'failed' state with result 'exit-code'.
dic 24 00:26:59 slimbook systemd[1]: Failed to start should run node app which launch a desktop notification.
-- Subject: A start job for unit runjs.service has failed
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- A start job for unit runjs.service has finished with a failure.
--
-- The job identifier is 2072 and the job result is failed.
私は何が間違っていましたか?