3 votes

L'ordre du journal d'un script s'exécutant avant l'arrêt ?

cat  /home/upload.sh  
/usr/bin/scp -P 22   /home/material.gz   root@remote_ip:/home
date  >>  /var/log/upload.log

Paramètres 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.

Ce qui est étrange, c'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 n'y a-t-il pas d'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.

Seules les deux dernières lignes diffèrent, pourquoi ?
Ce qui donne lieu à ce type d'informations dans le journal ?

Faites comme George Udosen le dit : Essayez ceci dans le fichier de service [Unit] Requires=network-online.target After=network.target network-online.target.

my setting

Cela ne sert à rien du tout.

log after revise my setting as George Udosen say

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

0voto

Elder Geek Points 34144

Sur la base des informations actuellement disponibles, je suppose que vous disposez d'un processeur multi-core ou au moins multi-thread et que le découplage de la répartition et de l'émission permet une exécution hors ordre, provoquant cette anomalie hors ordre dans la sortie du journal. J'utiliserais numactl pour lancer votre script. Voici un exemple :

numactl --physcpubind=0 /path/to/your/script

ou dans ce cas précis

numactl --physcpubind=0 /home/upload.sh

Ceci exécutera votre processus sur le premier cœur/cpu assigné à votre chipset (index 0) comme indiqué dans la liste suivante /proc/cpuinfo Cela forcera le script à exécuter au maximum un thread simultanément, mais cela ne signifie pas que le processus entier sera composé d'un seul thread. Si le programme est écrit pour spawn un nouveau thread, il le fera, mais il s'exécutera sur le même core/cpu/thread que le reste du processus.

EDIT: Notez qu'en limitant votre traitement à un seul thread/cœur/cpu, cela peut entraîner un traitement plus lent de la tâche à accomplir.

Sources :

https://superuser.com/questions/692138/how-to-force-a-process-to-run-on-a-single-thread-only-with-numactl

man numactl

https://en.wikipedia.org/wiki/Out-of-order_execution

https://en.wikipedia.org/wiki/Multithreading_(architecture informatique)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X