cat /home/upload.sh
/usr/bin/scp -P 22 /home/material.gz root@remote_ip:/home
date >> /var/log/upload.log
Réglage pour upload.service
cat /etc/systemd/system/upload.service
[Unit]
Description=upload files into my vps
Before=shutdown.target reboot.target
Requires=network-online.target
After=network.target
[Service]
ExecStart=/bin/true
ExecStop=/bin/bash /home/upload.sh
[Install]
WantedBy=multi-user.target
Le script peut télécharger le fichier dans mon vps avant l’arrêt.
La chose étrange est le journal du service de téléchargement.
journal -u upload
Apr 23 12:54:50 localhost systemd[1]: Stopping upload files into my vps...
Apr 23 12:55:13 localhost systemd[1]: Stopped upload files into my vps.
Apr 23 12:55:19 localhost systemd[1]: Started upload files into my vps.
Apr 23 12:55:19 localhost systemd[1]: Starting upload files into my vps...
Pourquoi ce n'est pas comme l'ordre suivant?
Apr 23 12:54:50 localhost systemd[1]: Stopping upload files into my vps...
Apr 23 12:55:13 localhost systemd[1]: Stopped upload files into my vps.
Apr 23 12:55:19 localhost systemd[1]: Starting upload files into my vps...
Apr 23 12:55:19 localhost systemd[1]: Started upload files into my vps.
Ne diffèrent que dans les deux dernières lignes, pourquoi?
Quel est le résultat de ce type d’informations de journal?
Faites ce que George Udosen dit: Essayez ceci dans le fichier de service [Unité] Requiert = network-online.target After = network.target network-online.target.
Ce n'est d'aucune utilité.
lshw -C cpu
*-cpu
product: Intel(R) Xeon(R) CPU E3-1275 v5 @ 3.60GHz
vendor: Intel Corp.
vendor_id: GenuineIntel
physical id: 1
bus info: cpu@0
width: 64 bits
capabilities: fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp x86-64 constant_tsc Arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf cpuid_faulting pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch ida arat epb pln pts dtherm hwp hwp_noitfy hwp_act_window hwp_epp invpcid_single tpr_shadow vnmi flexpriority ept vpid fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm rdseed adx xsaveopt xsavec xgetbv1 xsaves
Sur la base des informations actuellement disponibles, je suppose que vous possédez un processeur multicœur ou du moins multithread et que le découplage de la répartition et des problèmes permet une exécution dans le désordre, ce qui provoque cette anomalie dans la sortie du journal. Je voudrais utiliser numactl
pour lancer votre script. Voici un exemple:
numactl --physcpubind=0 /path/to/your/script
ou dans ce cas particulier
numactl --physcpubind=0 /home/upload.sh
Cela exécutera votre processus sur le premier core/cpu attribué à votre chipset (index 0), comme indiqué dans /proc/cpuinfo
Cela forcera le script à exécuter simultanément au plus un thread, mais cela ne signifie pas que tout le processus être composé d'un seul fil. si le programme est écrit pour créer un nouveau thread, il le fera, mais il s'exécutera sur le même noyau/cpu/thread que le reste du processus.
EDIT: Notez qu'en limitant votre traitement à un seul thread/core/cpu, cela peut ralentir le traitement de la tâche à accomplir.
Sources:
man numactl
https://en.wikipedia.org/wiki/Out-of-order_execution
https://en.wikipedia.org/wiki/Multithreading_ (computer_architecture)