In certi periodi della mia vita, quelli in cui ho affrontato dei cambiamenti, avverto l’avvicinarsi del primo gennaio più forte.
È tutto un insieme di sensazioni, principalmente negative.
Di ansia, incertezza e profonda inquietudine.
Mi chiedono “cos’hai?” Come se la domanda non fosse scontata e la risposta di più.
Eh, cosa ho. Cosa non ho.
“Non lo so” E invece lo so. Sempre.
Dal primo gennaio di quell’anno.
Negli anni a venire ho iniziato a convincermi che ci fosse una sorta di data di scadenza del Dolore e che dopo non fosse più consigliato aprire la confezione.
Fine di una amicizia? Dai 3 ai 6mesi.
A seconda dell’amicizia.
Fine di un amore? Dai 6 ai 12 mesi, dopo diventa chiusura. O clausura.
Lutto? ahi, questa è difficile!
“Non lo so” E invece lo so. Sempre.
Dal primo gennaio di quell’anno.
Sarebbe così semplice avere delle etichette PAO come nei cosmetici (grazie Emma ♥️)
E poi buttare la confezione di Dolore scaduta proprio come dovrei fare con l’oki che mi ostino a portarmi sempre dietro.
Fra poco saranno anni.
Anni di domande senza risposte.
Di malattie senza medicine.
Di conti senza oste.
Di tempo che non abbiamo avuto.
Di confezioni senza scadenza.
Non ho imparato a buttare via ma a crescere e lasciare andare.
E ho imparato a ridere, ridere tanto.
Ad amare, ascoltare, sbagliare, chiedere scusa… E lasciare andare, le persone non i ricordi.
Quelli ancora mi invadano, come dicevo,
i giorni prima del nuovo anno.
Autore: Luigi Molinaro
Niente succede per caso
Siamo tutti connessi in qualche modo.
Alla fine la chiave l’ho trovata, era tutto nella mia testa.
«Tu sei innamorato di un sogno»
Tutto ti sembrava speciale perché era tutto solo frutto di un sogno. La realtà che parlava di ben altro.
Una realtà (quella del passato) che se è fine a se stessa risulta essere solo un riflesso delle proprie immaginazioni (delle pagine con dei confini, quindi).
«E Zelda è proprio così come te la immagini!»
Vivere nel presente
Siamo costantemente alla ricerca della felicità, tutti, nessuno escluso. La aspettiamo,desideriamo, sembra non arrivare mai e se arriva se ne va. E se invece di aspettare iniziassimo a fare qualcosa? Cosa è ?
Cambia sicuramente con il tempo ed in fondo, se ci reflettiamo forse non sappiamo neanche elencari i punti che ci permetterebbero di esserlo. Vero ? Vivere il presente! Quante volte abbiamo letto o sentito dire questa frase?
Senti sempre quel maldipancia ? Quel senso d’insoddisfazione che neanche tu sai bene cosa sia e ti butti sempre in qualcosa di nuovo ?
Basta sempre cercare qualcosa di nuovo ?
Basta trovare il prossimo obiettivo ?
Non sai tu neanche cosa, senti solo quel senso d’insoddisfazione. Basta cambiare il modo in cui guardo le cose ? Basta solo questo ?
Non c’è niente di diverso nella mia vita, ho solo cambiato il modo in cui guardo le cose. Sono rimasto stupito di quanti piccoli momenti di felicità avevo durante ogni mia giornata, anche in quelle più brutte.
Semplicemente non me ne rendevo conto
È inutile aspettare un momento felice, non arrivera mai e saremo perennemente insoddisfatti : è inutile aspettare un giorno di sole e durante tutti gli altri lamentarsi della pioggia, è inutile aspettare il momento per fare. Non esiste il momento buono, mai.
Non è facile, ma una cosa che mi ha aiutato è il barattolo della felicità.
È un modo semplice, ma efficace, per iniziare ad essere consapevoli di quelle piccole cose che ci rendono felici durante la giornata.
Il Barattolo della felicità è un progetto nato dall’idea della scrittrice Elizabet Gilbert, autrice del best seller “mangia prega ama” (Eat pray love) da vedere !!! .
Come creare il barattolo della felicità
Ecco l’occorrente :
- Un barattolo di vetro
- Foglietti colorati
- Matite, pennarelli, penne colorate
- Un pizzico di fantasia
Oppure, semplicemente un foglio word, un notepad, google keep, cosa che, da buon informatico, preferisco.
Ogni sera, prima di andare a dormire, prendetevi 5 minuti, pensate e scrivete su un bigliettino un momento felice della giornata appena trascorsa, dopodiché mettetelo nel barattolo o sul pc.
Nel barattolo metteremo solo un momento felice, ma ripercorrendo con la mente la giornata per trovarlo, vi accorgerete che ce n’è più di uno. A volte faticherete a scegliere.
Farlo di sera è importante perché vi addormenterete ricordando cose felici e quindi, più rilassati.
Durante la giornata diventerete più consapevoli delle cose belle che accadono e a cui prima non facevate nemmeno caso. Ricordate? Rendersene conto.
Nel mio barattolo a volte c’è una canzone, un semplice sorriso.
Quando il barattolo è pieno o quando ne sentite il bisogno, è arrivato il momento di rileggere i vostri bigliettini.
Sentivo perdermi dentro te. Non avevo mai provato.
Sopravvalutato
“È la fine della storia, e non lo sai. Lui è lì, in piedi davanti alla finestra, e tu non gli perdoni di schermare la luce. Non è lui che vedi, ma il giorno, cui lui impedisce di entrare. Inizia così. Lui è lì, e la sua presenza ti dà fastidio… Certo, per lui provi tenerezza. Pare si dica così quando non si ama più. Ma allora, più si prova tenerezza e meno si ama? Chi può dire quale sia la differenza? Tenerezza è quando non c’è più desiderio. Una carezza sulla guancia prima di addormentarsi. Come fratello e sorella.“
Wonderful
You just walked out of here and now I know what I will die for
It’s really hard to stay afloat when you got no reason (to do it for) it’s Wonderful
So who’ll forget your face?
Who’ll forget your warm embrace?
I won’t Who will fix this broken door?
Who will bring the lights back home?
You won’t Like the end, you are slowly fading
Lascia
“Lascia che le cose si rompano, smettila di cercare di tenerle insieme.
Lascia che le persone si arrabbino.
Lascia che ti critichino, la loro reazione non è un tuo problema.
Lascia che tutto cada a pezzi e non preoccuparti dopo.
Dove andrò? Cosa ho intenzione di fare?
Nessuno si è mai perso per strada, nessuno è rimasto senza riparo.
Ciò che è destinato ad andare andrà comunque.
Ciò che deve restare rimarrà.
Troppo sforzo non è mai un buon segno, troppo sforzo è un segno di conflitto con l’universo.
Relazioni
Lavori
Casa
Amici e grandi amori …
Dai tutto al creatore, acqua quando puoi, prega e balla ma poi lascia che fiorisca e che le foglie secche si strappino da sole.
Ciò che va, lascia sempre spazio a qualcosa di nuovo: sono le leggi universali.
E non pensare mai che non ci sia più niente di buono per te, solo che devi smettere di contenere ciò che devi lasciare andare.
Solo quando il tuo viaggio sarà finito, le possibilità finiranno, ma fino ad allora, lascia che tutto vada in pezzi, lascia andare, lascia che sia. “
Non ho più paura
I used to think death was the end
Dream Theater
But that was before
I’m not scared anymore
Where did we come from?
Why are we here?
Where do we go when we die?
What lies beyond
And what lay before?
Is anything certain in life?They say, life is too short
The here and the now
And you're only given one shot
But could there be more
Have I lived before
Or could this be all that we've got?If I die tomorrow
I'd be all right
Because I believe
That after we're gone
The spirit carries onI used to be frightened of dying
I used to think death was the end
But that was before
I'm not scared anymore
I know that my soul will transcendI may never find all the answers
I may never understand why
I may never prove
What I know to be true
But I know that I still have to tryIf I die tomorrow
I'd be alright
Because I believe
That after we're gone
The spirit carries onMove on, be brave
Don't weep at my grave
Because I am no longer here
But please never let
Your memory of me disappearSafe in the light that surrounds me
Free of the fear and the pain
My questioning mind
Has helped me to find
The meaning in my life again
Victoria's real
I finally feel
At peace with the girl in my dreams
And now that I'm here
It's perfectly clear
I found out what all of this meansIf I die tomorrow
I'd be alright
Because I believe
That after we're gone
The spirit carries on
Fuori dal coro
Fuori dal coro dico
che la più grande battaglia della nostra epoca è quella che combattiamo contro l’ego.
Abbiamo sempre questo spasmodico bisogno di riempirlo .
Ignorando che è proprio lui la principale causa dei nostri malesseri .
E i social non fanno altro che amplificare tutto questo .
Ricevere un complimento sulla tua immagine sul web non aggiunge alcun valore alla persona ( le cui qualità continuano a rimanere sconosciute ai più che ti mettono il tanto sospirato like )
La parola ego significa “ io”. Rappresenta la coscienza di chi siamo . È quello che facciamo che definisce chi siamo . Riempire l ego con ciò che facciamo è positivo .
Questo ego positivo è minato costantemente dal bisogno di approvazione virtuale .
Normalmente una persona non va in giro fermando sconosciuti e chiedendogli se a 50 anni è ancora figo, o se piace la nuova maglietta attillata.
Sarebbe strano .. e comunque inutile . Gli uomini e le donne per noi belli (anche quando non lo sono esteticamente) si riconoscono quasi chimicamente. A volte è un semplice sorriso.
L’autostima è quindi costantemente minata sul web se ci si propone con un aspetto superficiale come l’immagine .
Alimentando il bisogno di pubblicare sempre più immagini . Alimentiamo il bisogno di sentirci degli “influencer”, che poi tra filtri, ciglia finte, pose strategiche, grand’angoli non siamo neanche noi ma una proiezione di noi, a volte una caricatura.
L’uomo e la donna hanno dei bisogni . Il bisogno nasce da una mancanza.
Se una persona pubblica 5 /6 foto di sè tutte in fila chiedendo approvazione .. è perché ne ha bisogno .. quindi manca. Manca autostima appunto . E ha bisogno del consenso .
Da qui nascono selfie in tutte le pose , tag a posti dove non si è nemmeno stati , foto con amici a significare una vita mondana anche quando invece sono le persone più sole del mondo: l’ego vero si nutre di verità . Per quanto imperfetti e poco piacevoli possiamo essere … quanto è bella la verità !!!
😘😘
Ma questo è un altro discorso ..
Linux Name spaces
Namespaces in Linux are heavily used by many applications, e.g. LXC, Docker and Openstack.
Question: How to find all existing namespaces in a Linux system?
The answer is quite difficult, because it’s easy to hide a namespace or more exactly make it difficult to find them.
Exploring the system
In the basic/default setup Ubuntu 12.04 and higher provide namespaces for
- ipc for IPC objects and POSIX message queues
- mnt for filesystem mountpoints
- net for network abstraction (VRF)
- pid to provide a separated, isolated process ID number space
- uts to isolate two system identifiers — nodename and domainname – to be used by uname
These namespaces are shown for every process in the system. if you execute as rootls -lai /proc/1/nsShell
ls -lai /proc/1/ns
60073292 dr-x--x--x 2 root root 0 Dec 15 18:23 .
10395 dr-xr-xr-x 9 root root 0 Dec 4 11:07 ..
60073293 lrwxrwxrwx 1 root root 0 Dec 15 18:23 ipc -> ipc:[4026531839]
60073294 lrwxrwxrwx 1 root root 0 Dec 15 18:23 mnt -> mnt:[4026531840]
60073295 lrwxrwxrwx 1 root root 0 Dec 15 18:23 net -> net:[4026531968]
60073296 lrwxrwxrwx 1 root root 0 Dec 15 18:23 pid -> pid:[4026531836]
60073297 lrwxrwxrwx 1 root root 0 Dec 15 18:23 uts -> uts:[4026531838]
you get the list of attached namespaces of the init process using PID=1. Even this process has attached namespaces. These are the default namespaces for ipc, mnt, net, pid and uts. For example, the default net namespace is using the ID net:[4026531968]. The number in the brackets is a inode number.
In order to find other namespaces with attached processes in the system, we use these entries of the PID=1 as a reference. Any process or thread in the system, which has not the same namespace ID as PID=1 is not belonging to the DEFAULT namespace.
Additionally, you find the namespaces created by „ip netns add <NAME>“ by default in /var/run/netns/ .
The python code
The python code below is listing all non default namespaces in a system. The program flow is
- Get the reference namespaces from the init process (PID=1). Assumption: PID=1 is assigned to the default namespaces supported by the system
- Loop through /var/run/netns/ and add the entries to the list
- Loop through /proc/ over all PIDs and look for entries in /proc/<PID>/ns/ which are not the same as for PID=1 and add then to the list
- Print the result
List all non default namespaces in a systemPython
#!/usr/bin/python
#
# List all Namespaces (works for Ubuntu 12.04 and higher)
#
# (C) Ralf Trezeciak 2013-2014
#
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import os
import fnmatch
if os.geteuid() != 0:
print "This script must be run as root\nBye"
exit(1)
def getinode( pid , type):
link = '/proc/' + pid + '/ns/' + type
ret = ''
try:
ret = os.readlink( link )
except OSError as e:
ret = ''
pass
return ret
#
# get the running command
def getcmd( p ):
try:
cmd = open(os.path.join('/proc', p, 'cmdline'), 'rb').read()
if cmd == '':
cmd = open(os.path.join('/proc', p, 'comm'), 'rb').read()
cmd = cmd.replace('\x00' , ' ')
cmd = cmd.replace('\n' , ' ')
return cmd
except:
return ''
#
# look for docker parents
def getpcmd( p ):
try:
f = '/proc/' + p + '/stat'
arr = open( f, 'rb').read().split()
cmd = getcmd( arr[3] )
if cmd.startswith( '/usr/bin/docker' ):
return 'docker'
except:
pass
return ''
#
# get the namespaces of PID=1
# assumption: these are the namespaces supported by the system
#
nslist = os.listdir('/proc/1/ns/')
if len(nslist) == 0:
print 'No Namespaces found for PID=1'
exit(1)
#print nslist
#
# get the inodes used for PID=1
#
baseinode = []
for x in nslist:
baseinode.append( getinode( '1' , x ) )
#print "Default namespaces: " , baseinode
err = 0
ns = []
ipnlist = []
#
# loop over the network namespaces created using "ip"
#
try:
netns = os.listdir('/var/run/netns/')
for p in netns:
fd = os.open( '/var/run/netns/' + p, os.O_RDONLY )
info = os.fstat(fd)
os.close( fd)
ns.append( '-- net:[' + str(info.st_ino) + '] created by ip netns add ' + p )
ipnlist.append( 'net:[' + str(info.st_ino) + ']' )
except:
# might fail if no network namespaces are existing
pass
#
# walk through all pids and list diffs
#
pidlist = fnmatch.filter(os.listdir('/proc/'), '[0123456789]*')
#print pidlist
for p in pidlist:
try:
pnslist = os.listdir('/proc/' + p + '/ns/')
for x in pnslist:
i = getinode ( p , x )
if i != '' and i not in baseinode:
cmd = getcmd( p )
pcmd = getpcmd( p )
if pcmd != '':
cmd = '[' + pcmd + '] ' + cmd
tag = ''
if i in ipnlist:
tag='**'
ns.append( p + ' ' + i + tag + ' ' + cmd)
except:
# might happen if a pid is destroyed during list processing
pass
#
# print the stuff
#
print '{0:>10} {1:20} {2}'.format('PID','Namespace','Thread/Command')
for e in ns:
x = e.split( ' ' , 2 )
print '{0:>10} {1:20} {2}'.format(x[0],x[1],x[2][:60])
#
Copy the script to your system as listns.py , and run it as root using python listns.py
PID Namespace Thread/Command
-- net:[4026533172] created by ip netns add qrouter-c33ffc14-dbc2-4730-b787-4747
-- net:[4026533112] created by ip netns add qrouter-5a691ed3-f6d3-4346-891a-3b59
-- net:[4026533050] created by ip netns add qdhcp-02e848cb-72d0-49df-8592-2f7a03
-- net:[4026532992] created by ip netns add qdhcp-47cfcdef-2b34-43b8-a504-6720e5
297 mnt:[4026531856] kdevtmpfs
3429 net:[4026533050]** dnsmasq --no-hosts --no-resolv --strict-order --bind-interfa
3429 mnt:[4026533108] dnsmasq --no-hosts --no-resolv --strict-order --bind-interfa
3446 net:[4026532992]** dnsmasq --no-hosts --no-resolv --strict-order --bind-interfa
3446 mnt:[4026533109] dnsmasq --no-hosts --no-resolv --strict-order --bind-interfa
3486 net:[4026533050]** /usr/bin/python /usr/bin/neutron-ns-metadata-proxy --pid_fil
3486 mnt:[4026533107] /usr/bin/python /usr/bin/neutron-ns-metadata-proxy --pid_fil
3499 net:[4026532992]** /usr/bin/python /usr/bin/neutron-ns-metadata-proxy --pid_fil
3499 mnt:[4026533110] /usr/bin/python /usr/bin/neutron-ns-metadata-proxy --pid_fil
4117 net:[4026533112]** /usr/bin/python /usr/bin/neutron-ns-metadata-proxy --pid_fil
4117 mnt:[4026533169] /usr/bin/python /usr/bin/neutron-ns-metadata-proxy --pid_fil
41998 net:[4026533172]** /usr/bin/python /usr/bin/neutron-ns-metadata-proxy --pid_fil
41998 mnt:[4026533229] /usr/bin/python /usr/bin/neutron-ns-metadata-proxy --pid_fil
The example above is from an Openstack network node. The first four entries are entries created using the command ip. The entry PID=297 is a kernel thread and no user process. All other processes listed, are started by Openstack agents. These process are using network and mount namespaces. PID entries marked with ‚**‘ have a corresponding entry created with the ip command.
When a docker command is started, the output is:
PID Namespace Thread/Command
-- net:[4026532676] created by ip netns add test
35 mnt:[4026531856] kdevtmpfs
6189 net:[4026532585] [docker] /bin/bash
6189 uts:[4026532581] [docker] /bin/bash
6189 ipc:[4026532582] [docker] /bin/bash
6189 pid:[4026532583] [docker] /bin/bash
6189 mnt:[4026532580] [docker] /bin/bash
The docker child running in the namespaces is marked using [docker].
On a node running mininet and a simple network setup the output looks like :
exampleShell
PID Namespace Thread/Command
14 mnt:[4026531856] kdevtmpfs
1198 net:[4026532150] bash -ms mininet:h1
1199 net:[4026532201] bash -ms mininet:h2
1202 net:[4026532252] bash -ms mininet:h3
1203 net:[4026532303] bash -ms mininet:h4
Googles Chrome Browser
Googles Chrome Browser makes extensive use of the linux namespaces. Start Chrome and run the python script. The output looks like:Chrome’s namespaces
PID Namespace Thread/Command
63 mnt:[4026531856] kdevtmpfs
30747 net:[4026532344] /opt/google/chrome/chrome --type=zygote
30747 pid:[4026532337] /opt/google/chrome/chrome --type=zygote
30753 net:[4026532344] /opt/google/chrome/nacl_helper
30753 pid:[4026532337] /opt/google/chrome/nacl_helper
30754 net:[4026532344] /opt/google/chrome/chrome --type=zygote
30754 pid:[4026532337] /opt/google/chrome/chrome --type=zygote
30801 net:[4026532344] /opt/google/chrome/chrome --type=renderer --lang=en-US --for
30801 pid:[4026532337] /opt/google/chrome/chrome --type=renderer --lang=en-US --for
30807 net:[4026532344] /opt/google/chrome/chrome --type=renderer --lang=en-US --for
30807 pid:[4026532337] /opt/google/chrome/chrome --type=renderer --lang=en-US --for
30813 net:[4026532344] /opt/google/chrome/chrome --type=renderer --lang=en-US --for
30813 pid:[4026532337] /opt/google/chrome/chrome --type=renderer --lang=en-US --for
30820 net:[4026532344] /opt/google/chrome/chrome --type=renderer --lang=en-US --for
30820 pid:[4026532337] /opt/google/chrome/chrome --type=renderer --lang=en-US --for
30829 net:[4026532344] /opt/google/chrome/chrome --type=renderer --lang=en-US --for
30829 pid:[4026532337] /opt/google/chrome/chrome --type=renderer --lang=en-US --for
30835 net:[4026532344] /opt/google/chrome/chrome --type=renderer --lang=en-US --for
30835 pid:[4026532337] /opt/google/chrome/chrome --type=renderer --lang=en-US --for
30841 net:[4026532344] /opt/google/chrome/chrome --type=renderer --lang=en-US --for
30841 pid:[4026532337] /opt/google/chrome/chrome --type=renderer --lang=en-US --for
30887 net:[4026532344] /opt/google/chrome/chrome --type=renderer --lang=en-US --for
30887 pid:[4026532337] /opt/google/chrome/chrome --type=renderer --lang=en-US --for
30893 net:[4026532344] /opt/google/chrome/chrome --type=renderer --lang=en-US --for
30893 pid:[4026532337] /opt/google/chrome/chrome --type=renderer --lang=en-US --for
30901 net:[4026532344] /opt/google/chrome/chrome --type=renderer --lang=en-US --for
30901 pid:[4026532337] /opt/google/chrome/chrome --type=renderer --lang=en-US --for
30910 net:[4026532344] /opt/google/chrome/chrome --type=renderer --lang=en-US --for
30910 pid:[4026532337] /opt/google/chrome/chrome --type=renderer --lang=en-US --for
30915 net:[4026532344] /opt/google/chrome/chrome --type=renderer --lang=en-US --for
30915 pid:[4026532337] /opt/google/chrome/chrome --type=renderer --lang=en-US --for
30923 net:[4026532344] /opt/google/chrome/chrome --type=renderer --lang=en-US --for
30923 pid:[4026532337] /opt/google/chrome/chrome --type=renderer --lang=en-US --for
30933 net:[4026532344] /opt/google/chrome/chrome --type=renderer --lang=en-US --for
30933 pid:[4026532337] /opt/google/chrome/chrome --type=renderer --lang=en-US --for
30938 net:[4026532344] /opt/google/chrome/chrome --type=renderer --lang=en-US --for
30938 pid:[4026532337] /opt/google/chrome/chrome --type=renderer --lang=en-US --for
30944 net:[4026532344] /opt/google/chrome/chrome --type=renderer --lang=en-US --for
30944 pid:[4026532337] /opt/google/chrome/chrome --type=renderer --lang=en-US --for
31271 net:[4026532344] /opt/google/chrome/chrome --type=renderer --lang=en-US --for
31271 pid:[4026532337] /opt/google/chrome/chrome --type=renderer --lang=en-US --for
31538 net:[4026532344] /opt/google/chrome/chrome --type=renderer --lang=en-US --for
31538 pid:[4026532337] /opt/google/chrome/chrome --type=renderer --lang=en-US --for
Chrome makes use of pid and network namespaces to restrict the access of subcomponents. The network namespace does not have a link in /var/run/netns/.
Conclusion
It’s quite hard to explore the Linux namespace. There is a lot of documentation flowing around. I did not find any simple program to look for namespaces in the system. So I wrote one.
The script cannot find a network namespace, which do not have any process attached to AND which has no reference in /var/run/netns/. If root creates the reference inode somewhere else in the filesystem, you may only detect network ports (ovs port, veth port on one side), which are not attached to a known network namespace –> an unknown guest might be on your system using a „hidden“ (not so easy to find) network namespace.
And — Linux namespaces can be stacked.
Per te (per me)
Qualunque fiore tu sia, quando verrà il tuo tempo, sboccerai. Prima di allora una lunga e fredda notte potrà passare. Anche dai sogni della notte trarrai forza e nutrimento. Perciò sii paziente verso quanto ti accade e curati e amati senza paragonarti o voler essere un altro fiore, perché non esiste fiore migliore di quello che si apre nella pienezza di ciò che è. E quando ciò accadrà, potrai scoprire che andavi sognando di essere un fiore che aveva da fiorire.“ — Daisaku Ikeda