Unterschied zw x und echo x | at now

Bohnenhans

Captain
Registriert
Okt. 2022
Beiträge
3.100
Was ist denn eigentlich der techn. Unterschied zw

PROGX

und echo "PROGX" | at now

Ich nutze letzteres ab und zu wenn der Aufruf direkt Fehler bringt. aktuell z.B. bei einem zfs mount in einem bash script

Hehe aber warum das klappt weiss ich nicht (gleicher Nutzer, gleicher $PATH)

Also z.B. damit man sieht um was es geht

Code:
BASH Script
...

echo "/sbin/zpool import -a" | at now   // <= das tut
# /sbin/zpool import -a   // das tut nicht

myResult=""
while [ -z "$myResult" ];
do
   myResult=$(/sbin/zpool status | grep "tank")
   sleep 1
done

echo "/sbin/zfs mount tank" | at now   // <= das tut
# /sbin/zfs mount tank // <= das bringt Fehler wie tank ist bereits gemountet obwohl das NICHT der Fall ist
 
Zuletzt bearbeitet:
debian 12.1

/usr/bin/at
(at version 3.2.5)

Das Verhalten ist unter 22.04 und 23.04 ubuntu identisch
 
Eine konkrete Antwort habe ich nicht. Es könnte sein, dass das Shell-Environment innerhalb von at ein anderes ist oder at unter einem anderen Benutzer und daher mit anderen Rechten läuft.

Mache mal:
Code:
env | sort > env.txt
echo "env | sort > env.at.txt" | at now
und dann vergleiche die beiden Textdateien.

Bohnenhans schrieb:
das bringt Fehler wie
„Fehler wie“ bedeutet, dass noch andere Fehler kommen? Oder nur dieser eine Fehler?
 
Was sagt denn $ ls -l /sbin?
/sbin sind eigentlich system binaries, die im Userspace nicht im PATH sein sollten und entsprechend nicht für normale User gedacht sind. Traditionell befindet sich der Ordner in der initrd und wird später durch das rootfs übermountet. Die Linkerdaten könnten auf andere libc/shared libraries verweisen (aus der initrd), was alles mögliche verursachen kann. Auch könnten die Programme in einem anderen Mountspace sein.
 
Zuletzt bearbeitet:
die scripte laufen immer als root weil die ja so zfs krams machen etc- und haben den $PATH definiert wie auch beim root login.

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

Es kommen bei Direktaufruf ohne über at ganz komische s Verhalten zfs mount meint "tank" sei gemountet und im log finden sich Einträge wie

Code:
Aug 17 11:54:25 804-6x22TB systemd[1]: zfs-share.service: Deactivated successfully.
Aug 17 11:54:25 804-6x22TB systemd[1]: Stopped zfs-share.service - ZFS file system shares.
Aug 17 11:54:25 804-6x22TB systemd[1]: Stopping zfs-share.service - ZFS file system shares...

Bei Aufruf über "at" dagegen nicht - gleiches script gleiche Stelle wirklich nur das geändert
 
Nochmal, was sagt $ ls -l /sbin?
Was ergibt:
Code:
$ ldd /sbin/zfs
$ ldd $(which at)
 
/sbin/zfs selbst funktioniert problemlos in beiden Varianten (also direkt oder Aufruf per at) z.b. wenn ich andere Dinge wie die Funktion "zfs load-key....." nutze


Code:
ls -l

lrwxrwxrwx 1 root root 8 17. Aug 10:38 /sbin -> usr/sbin


ldd /sbin/zfs

root@804-6x22TB:~# ldd /sbin/zfs
        linux-vdso.so.1 (0x00007ffd0ee3b000)
        libzfs.so.4 => /lib/x86_64-linux-gnu/libzfs.so.4 (0x00007f91da55b000)
        libzfs_core.so.3 => /lib/x86_64-linux-gnu/libzfs_core.so.3 (0x00007f91da53b000)
        libnvpair.so.3 => /lib/x86_64-linux-gnu/libnvpair.so.3 (0x00007f91da521000)
        libuutil.so.3 => /lib/x86_64-linux-gnu/libuutil.so.3 (0x00007f91da50f000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f91da32e000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f91da24d000)
        libcrypto.so.3 => /lib/x86_64-linux-gnu/libcrypto.so.3 (0x00007f91d9c00000)
        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f91da22e000)
        libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007f91da224000)
        libblkid.so.1 => /lib/x86_64-linux-gnu/libblkid.so.1 (0x00007f91da1cd000)
        libudev.so.1 => /lib/x86_64-linux-gnu/libudev.so.1 (0x00007f91da19f000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f91da5fe000)
        libtirpc.so.3 => /lib/x86_64-linux-gnu/libtirpc.so.3 (0x00007f91da16f000)
        libgssapi_krb5.so.2 => /lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x00007f91da11d000)
        libkrb5.so.3 => /lib/x86_64-linux-gnu/libkrb5.so.3 (0x00007f91d9b26000)
        libk5crypto.so.3 => /lib/x86_64-linux-gnu/libk5crypto.so.3 (0x00007f91da0f0000)
        libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007f91da0ea000)
        libkrb5support.so.0 => /lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00007f91da0da000)
        libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007f91da0d3000)
        libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007f91da0c2000)


root@804-6x22TB:~# ldd $(which at)
        linux-vdso.so.1 (0x00007ffebc254000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe495a92000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fe495c95000)
 
Zuletzt bearbeitet:
Bohnenhans schrieb:
# /sbin/zfs mount tank // <= das bringt Fehler wie tank ist bereits gemountet
Poste mal einen strace.
Code:
$ strace -v -f -s 256 sudo /sbin/zfs mount tank 2>&1 |curl -F 'file=@-' 0x0.st
 
Zurück
Oben