Man page - time_namespaces(7)
Packages contains this manual
- shm_overview(7)
- nss(5)
- proc_mtrr(5)
- intro(7)
- tcp(7)
- iso_8859-9(7)
- armscii-8(7)
- proc_kpagecount(5)
- initrd(4)
- mouse(4)
- proc_stat(5)
- x25(7)
- proc_interrupts(5)
- fifo(7)
- repertoiremap(5)
- icmp(7)
- futex(7)
- feature_test_macros(7)
- lp(4)
- bpf-helpers(7)
- epoll(7)
- proc_sys_dev(5)
- namespaces(7)
- proc_sysrq-trigger(5)
- proc_bus(5)
- cp1251(7)
- proc_pid_maps(5)
- proc_sys_vm(5)
- proc_pid_projid_map(5)
- st(4)
- proc_pid(5)
- issue(5)
- pid_namespaces(7)
- unicode(7)
- inode(7)
- hosts.equiv(5)
- iso-8859-13(7)
- proc_fb(5)
- proc_modules(5)
- proc_pid_autogroup(5)
- keyrings(7)
- sysvipc(7)
- proc_kmsg(5)
- cgroups(7)
- latin6(7)
- proc_pid_uid_map(5)
- unix(7)
- proc_pid_io(5)
- pts(4)
- packet(7)
- ld-linux.so(8)
- tzselect(8)
- iconv(1)
- proc_pid_syscall(5)
- proc_pid_net(5)
- proc_pid_pagemap(5)
- tty(4)
- proc_profile(5)
- standards(7)
- proc_pid_mounts(5)
- filesystems(5)
- iso-8859-15(7)
- locale(5)
- iso_8859_3(7)
- xattr(7)
- iso-8859-2(7)
- proc_uptime(5)
- persistent-keyring(7)
- credentials(7)
- proc_pid_timers(5)
- utmpx(5)
- vcsa(4)
- proc_pid_exe(5)
- proc_net(5)
- proc_timer_stats(5)
- ip(7)
- proc_pid_fd(5)
- ptmx(4)
- user_namespaces(7)
- resolv.conf(5)
- url(7)
- iso_8859_5(7)
- iso_8859-8(7)
- urn(7)
- process-keyring(7)
- proc_pid_auxv(5)
- proc_ksyms(5)
- proc_ide(5)
- veth(4)
- ldd(1)
- proc_swaps(5)
- landlock(7)
- proc_vmstat(5)
- system_data_types(7)
- cp1252(7)
- lirc(4)
- proc_kpageflags(5)
- random(7)
- precedence(7)
- cpuset(7)
- proc_pid_ns(5)
- acct(5)
- latin4(7)
- proc_pid_cgroup(5)
- proc_cpuinfo(5)
- iso_8859-2(7)
- proc_keys(5)
- charsets(7)
- pldd(1)
- proc_pid_stat(5)
- rtnetlink(7)
- netlink(7)
- ram(4)
- mem(4)
- iso-8859-6(7)
- proc_key-users(5)
- iso_8859_15(7)
- fanotify(7)
- proc_sys_net(5)
- sysfs(5)
- math_error(7)
- latin1(7)
- proc_pid_root(5)
- nptl(7)
- proc_cgroups(5)
- proc_iomem(5)
- proc_pid_statm(5)
- sem_overview(7)
- hier(7)
- full(4)
- proc_pid_status(5)
- proc_pid_cwd(5)
- proc_pid_cpuset(5)
- proc_scsi(5)
- uri(7)
- proc_diskstats(5)
- iso_8859_6(7)
- latin2(7)
- latin5(7)
- man-pages(7)
- ld.so(8)
- uts_namespaces(7)
- proc_pid_mountstats(5)
- intro(3)
- proc_pid_seccomp(5)
- proc_pid_wchan(5)
- attributes(7)
- symlink(7)
- mount_namespaces(7)
- charmap(5)
- tis-620(7)
- iso-8859-10(7)
- getent(1)
- proc_buddyinfo(5)
- ttytype(5)
- rtc(4)
- proc_malloc(5)
- suffixes(7)
- sln(8)
- signal(7)
- proc_sys_abi(5)
- signal-safety(7)
- time_namespaces(7)
- proc_pid_comm(5)
- raw(7)
- gai.conf(5)
- proc_crypto(5)
- locale(1)
- iso-8859-3(7)
- motd(5)
- proc_meminfo(5)
- iso-8859-8(7)
- protocols(5)
- proc_pid_map_files(5)
- pthreads(7)
- null(4)
- proc(5)
- zdump(8)
- socket(7)
- proc_sys_kernel(5)
- ddp(7)
- memusagestat(1)
- hd(4)
- iso-8859-14(7)
- shells(5)
- pipe(7)
- glob(7)
- proc_self(5)
- network_namespaces(7)
- utmp(5)
- proc_kcore(5)
- nsswitch.conf(5)
- sd(4)
- iso-8859-5(7)
- iso_8859_16(7)
- man(7)
- iso_8859-6(7)
- dir_colors(5)
- mq_overview(7)
- vsock(7)
- ascii(7)
- thread-keyring(7)
- fs(5)
- proc_pid_attr(5)
- proc_sys_debug(5)
- proc_sys(5)
- proc_pid_cmdline(5)
- pty(7)
- services(5)
- cgroup_namespaces(7)
- securetty(5)
- netdevice(7)
- iso_8859_13(7)
- host.conf(5)
- proc_pid_setgroups(5)
- proc_slabinfo(5)
- sock_diag(7)
- iso_8859-14(7)
- iso-8859-11(7)
- iso_8859_11(7)
- operator(7)
- regex(7)
- wavelan(4)
- proc_sys_fs(5)
- nologin(5)
- proc_pci(5)
- koi8-r(7)
- erofs(5)
- intro(2)
- utf8(7)
- proc_kallsyms(5)
- proc_sysvipc(5)
- queue(7)
- proc_sys_sunrpc(5)
- intro(5)
- latin8(7)
- mtrace(1)
- ipc_namespaces(7)
- dsp56k(4)
- iso_8859_4(7)
- proc_pid_smaps(5)
- proc_cmdline(5)
- rpc(5)
- proc_tty(5)
- proc_version(5)
- smartpqi(4)
- proc_pid_timerslack_ns(5)
- aio(7)
- session-keyring(7)
- resolver(5)
- slabinfo(5)
- wtmp(5)
- iso_8859_9(7)
- proc_locks(5)
- mailaddr(7)
- proc_pid_oom_score(5)
- kmem(4)
- iconvconfig(8)
- iso_8859-7(7)
- glibc(7)
- hostname(7)
- proc_thread-self(5)
- ipv6(7)
- iso_8859_7(7)
- proc_kpagecgroup(5)
- core(5)
- time(7)
- units(7)
- proc_dma(5)
- loop(4)
- address_families(7)
- zero(4)
- intro(4)
- procfs(5)
- iso_8859-4(7)
- vdso(7)
- tmpfs(5)
- iso-8859-16(7)
- iso_8859_10(7)
- user-session-keyring(7)
- libc(7)
- proc_fs(5)
- koi8-u(7)
- latin3(7)
- proc_tid_children(5)
- proc_pid_limits(5)
- proc_pid_coredump_filter(5)
- iso_8859-15(7)
- arp(7)
- urandom(4)
- iso_8859-10(7)
- hpsa(4)
- proc_pid_environ(5)
- boot(7)
- ftm(7)
- ld-linux(8)
- proc_driver(5)
- loop-control(4)
- iso_8859-16(7)
- proc_filesystems(5)
- tzfile(5)
- sprof(1)
- proc_pid_task(5)
- proc_pid_oom_score_adj(5)
- proc_mounts(5)
- iso-8859-4(7)
- iso_8859-1(7)
- utf-8(7)
- iso_8859-13(7)
- intro(6)
- proc_timer_list(5)
- rtld-audit(7)
- iso_8859-3(7)
- group(5)
- sched(7)
- proc_pid_clear_refs(5)
- hosts(5)
- iso_8859-11(7)
- numa(7)
- iso_8859_2(7)
- locale(7)
- iso-8859-1(7)
- fuse(4)
- proc_tid(5)
- proc_execdomains(5)
- proc_pid_mountinfo(5)
- intro(8)
- iso_8859_8(7)
- proc_loadavg(5)
- proc_pid_oom_adj(5)
- re_format(7)
- iso_8859_14(7)
- zic(8)
- bootparam(7)
- inotify(7)
- posixoptions(7)
- proc_partitions(5)
- iso-8859-9(7)
- proc_pid_mem(5)
- networks(5)
- proc_sys_user(5)
- udp(7)
- proc_zoneinfo(5)
- latin10(7)
- proc_pid_fdinfo(5)
- proc_pid_stack(5)
- memusage(1)
- spufs(7)
- pkeys(7)
- path_resolution(7)
- proc_ioports(5)
- intro(1)
- ldconfig(8)
- msr(4)
- svipc(7)
- port(4)
- proc_pid_personality(5)
- cciss(4)
- latin9(7)
- capabilities(7)
- localedef(1)
- vcs(4)
- iso_8859-5(7)
- elf(5)
- proc_sys_proc(5)
- console_codes(4)
- random(4)
- iso-8859-7(7)
- termcap(5)
- cpuid(4)
- environ(7)
- string_copying(7)
- proc_pid_gid_map(5)
- queue(3)
- termio(7)
- user-keyring(7)
- complex(7)
- latin7(7)
- proc_config.gz(5)
- udplite(7)
- kernel_lockdown(7)
- proc_devices(5)
- proc_apm(5)
- iso_8859_1(7)
- proc_pid_numa_maps(5)
apt-get install manpages
Available languages:
en sv ro deManual
time_namespaces
NAMNBESKRIVNING
/proc/pid/timens_offsets
NOTERINGAR
EXEMPEL
SE ĂVEN
ĂVERSĂTTNING
NAMN
time_namespaces â översikt över Linux tidnamnrymder
BESKRIVNING
Tidnamnrymder virtualiserar vÀrden för tvÄ systemklockor:
|
âą |
CLOCK_MONOTONIC (och likaledes CLOCK_MONOTONIC_COARSE och CLOCK_MONOTONIC_RAW ), en inte instĂ€llbar klocka som representerar monoton tid sedan â sĂ„som beskrivs av POSIX â ânĂ„gon ospecificerad punkt i det förgĂ„ngnaâ. |
||
|
âą |
CLOCK_BOOTTIME (och likaledes CLOCK_BOOTTIME_ALARM ), en inte instÀllbar klocka som Àr identisk med CLOCK_MONOTONIC , förutom att den Àven inkluderar eventuell tid som systemet har varit vilande. |
AlltsÄ delar processerna i en tidnamnrymd vÀrden per namnrymd för dessa klockor. Detta pÄverkar diverse API:er som mÀter mot dessa klockor, inklusive: clock_gettime (2), clock_nanosleep (2), nanosleep (2), timer_settime (2), timerfd_settime (2) och /proc/uptime .
För nÀrvarande Àr det enda sÀttet att skapa en tidnamnrymd genom att anropa unshare (2) med flaggan CLONE_NEWTIME . Detta anrop skapar en ny tidnamnrymd men placerar inte den anropande processen i den nya namnrymden. IstÀllet placeras den anropande processens sedermera skapade barn i den nya namnrymden. Detta gör att klockavstÄnd (se nedan) för den nya namnrymden kan sÀttas före den första processen placeras i namnrymden. Den symboliska lÀnken /proc/ pid /ns/time_for_children visar tidnamnrymden i vilken barnen till en process kommer skapas. (En process kan anvÀnda en filbeskrivare som öppnas mot denna symboliska lÀnk i ett anrop av setns (2) för att flytta in i namnrymden.)
/proc/pid/timens_offsets
Associerat med varje tidnamnrymd finns avstÄnd, uttryckta med avseende pÄ den initiala tidnamnrymden, som definierar vÀrdena för den monotona klockan och starttidsklockan i den namnrymden. Dessa avstÄnd visas via filen /proc/ pid /timens_offsets . Inom denna fil uttrycks avstÄnden som rader som bestÄr av tre blankavgrÀnsade fÀlt:
<klock-id> <avstÄnd-sek> <avstÄnd-nanosek>
Klock-id Àr en strÀng som identifierar klockan vars avstÄnd visas. Detta fÀlt Àr antingen monotonic , för CLOCK_MONOTONIC , eller boottime , för CLOCK_BOOTTIME . De ÄterstÄende fÀlten uttrycker avstÄndet (sekunder plus nanosekunder) för klockan i denna tidnamnrymd. Dessa avstÄnd uttrycks relativt klockvÀrdena i den initiala tidnamnrymden. VÀrdet avstÄnd-sek kan vara negativt, föremÄl för begrÀnsningarna som anges nedan; avstÄnd-nanosek Àr ett teckenlöst vÀrde.
I den initiala tidnamnrymden Àr innehÄllet i filen timens_offsets som följer:
$
cat
/proc/self/timens_offsets
monotonic 0 0
boottime 0 0
I en ny tidnamnrymd som inte har haft nÄgra medlemsprocesser kan klockavstÄnden Àndras genom att skriva nyradsavslutade poster med samma format till filen timens_offsets . Det gÄr att skriva till filen flera gÄnger, men efter att den första processen har skapats i eller gÄtt in i namnrymden kommer write (2) till denna fil att misslyckas med felet EACCES . För att skriva till filen timens_offsets mÄste en process ha förmÄgan CAP_SYS_TIME i anvÀndarnamnrymden som Àger tidnamnrymden.
Skrivningar till filen timens_offsets kan misslyckas med följande fel:
|
EINVAL |
Ett vÀrde pÄ avstÄnd-nanosek större Àn 999 999 999. |
|||
|
EINVAL |
Ett vÀrde pÄ klock-id som inte Àr giltigt. |
|||
|
EPERM |
Anroparen har inte förmÄgan CAP_SYS_TIME . |
|||
|
ERANGE |
Ett vÀrde pÄ avstÄnd-sek Àr utanför intervallet. Speciellt; |
âą
|
kan avstÄnd-sek inte sÀttas till ett vÀrde vilket skulle ge den aktuella tiden pÄ motsvarande klocka inuti namnrymden ett negativt vÀrde; vidare |
|||
|
âą |
kan avstÄnd-sek inte sÀttas till ett vÀrde sÄ att tiden pÄ motsvarande klocka inuti namnrymden skulle överskrida halva vÀrdet pÄ kÀrnkonstanten KTIME_SEC_MAX (detta begrÀnsar klockvÀrdet till ett maximum av ungefÀr 146 Är). |
I en ny tidnamnrymd skapad med unshare (2) Àrvs innehÄllet i filen timens_offsets frÄn tidnamnrymden hos den skapande processen.
NOTERINGAR
AnvÀndning av cgroup-namnrymder krÀver en kÀrna som Àr konfigurerad med alternativet CONFIG_TIME_NS .
Observera att tidnamnrymder inte virtualiserar klockan CLOCK_REALTIME . Virtualisering av denna klocka undveks pÄ grund av komplexitet och overhead inom kÀrnan.
För kompatibilitet med den ursprungliga implementationen kan, nÀr man skriver ett klock-id till filen /proc/ pid /timens_offsets , de numeriska vÀrdena av ID:n skrivas istÀllet för de symboliska namnen som visas ovan; d.v.s., 1 istÀllet för monotonic , och 7 istÀllet för boottime . För bÀsta lÀsbarhet rekommenderas det att man anvÀnder symboliska namn hellre Àn nummer.
Motivationen för att lÀgga till tidnamnrymder var för att göra det möjligt att lÄta den monotona klockan och starttidsklockan behÄlla konsistenta vÀrden under migrering av behÄllare och checkpunkt/ÄterstÀllning.
EXEMPEL
Följande skalsession demonstrerar funktionen hos tidnamnrymder. Vi börjar med att visa inodsnumret för tidnamnrymden för ett skal i den initiala tidnamnrymden:
$
readlink
/proc/$$/ns/time
time:[4026531834]
Fortfarande i den initiala tidnamnrymden visar vi systemets uppetid med uptime (1) och anvÀnder exempelprogrammet clock_times som visas i clock_getres (2) för att visa vÀrdet pÄ olika klockor:
$
uptime
--pretty
up 21 hours, 17 minutes
$
./clock_times
CLOCK_REALTIME : 1585989401.971 (18356 days + 8h 36m 41s)
CLOCK_TAI : 1585989438.972 (18356 days + 8h 37m 18s)
CLOCK_MONOTONIC: 56338.247 (15h 38m 58s)
CLOCK_BOOTTIME : 76633.544 (21h 17m 13s)
Vi anvÀnder sedan unshare (1) för att skapa en tidnamnrymd och köra ett skal bash (1). FrÄn det nya skalet anvÀnder vi det inbyggda kommandot echo för att skriva poster till filen timens_offsets och justera avstÄndet för klockan CLOCK_MONOTONIC framÄt 2 dagar och avstÄndet för klockan CLOCK_BOOTTIME framÄt 7 dagar:
$
PS1="ns2# " sudo unshare -T -- bash --norc
ns2#
echo "monotonic $((2*24*60*60)) 0" >
/proc/$$/timens_offsets
ns2#
echo "boottime $((7*24*60*60)) 0" >
/proc/$$/timens_offsets
Ovan startar vi skalet bash (1) med flaggan --norc sÄ att inga uppstartsskript körs. Detta sÀkerstÀller att inga barnprocesser skapas frÄn skalet före vi har haft en chans att uppdatera filen timens_offsets .
Vi anvÀnder sedan cat (1) för att visa innehÄllet i filen timens_offsets . Att cat (1) körs skapar den första processen i den nya tidnamnrymden, varefter vidare försök att uppdatera filen timens_offsets ger ett fel.
ns2#
cat
/proc/$$/timens_offsets
monotonic 172800 0
boottime 604800 0
ns2#
echo "boottime $((9*24*60*60)) 0" >
/proc/$$/timens_offsets
bash: echo: skrivfel: Ă
tkomst nekas
Fortfarande i den nya namnrymden kör vi uptime (1) och exempelprogrammet clock_times :
ns2#
uptime
--pretty
up 1 week, 21 hours, 18 minutes
ns2#
./clock_times
CLOCK_REALTIME : 1585989457.056 (18356 days + 8h 37m 37s)
CLOCK_TAI : 1585989494.057 (18356 days + 8h 38m 14s)
CLOCK_MONOTONIC: 229193.332 (2 days + 15h 39m 53s)
CLOCK_BOOTTIME : 681488.629 (7 days + 21h 18m 8s)
FrÄn ovanstÄende utskrift kan vi se att den monotona klockan och starttidsklockan har andra vÀrden i den nya tidnamnrymden.
Genom att undersöka de symboliska lÀnkarna /proc/ pid /ns/time och /proc/ pid /ns/time_for_children ser vi att skalet Àr medlem av den initiala tidnamnrymden, men dess barn skapas i den nya namnrymden.
ns2#
readlink /proc/$$/ns/time
time:[4026531834]
ns2#
readlink /proc/$$/ns/time_for_children
time:[4026532900]
ns2#
readlink /proc/self/ns/time
# Skapar en
barnprocess
time:[4026532900]
Efter att ha ÄtervÀnt till skalet i den initiala namnrymden ser vi att den monotona klockan och starttidsklockan Àr opÄverkade av Àndringarna av timens_offsets som gjordes i den andra tidnamnrymden:
$
uptime
--pretty
up 21 hours, 19 minutes
$
./clock_times
CLOCK_REALTIME : 1585989401.971 (18356 days + 8h 38m 51s)
CLOCK_TAI : 1585989438.972 (18356 days + 8h 39m 28s)
CLOCK_MONOTONIC: 56338.247 (15h 41m 8s)
CLOCK_BOOTTIME : 76633.544 (21h 19m 23s)
SE ĂVEN
nsenter (1), unshare (1), clock_settime (2), setns (2), unshare (2), namespaces (7), time (7)
ĂVERSĂTTNING
Den svenska översÀttningen av denna manualsida skapades av Göran Uddeborg <goeran@uddeborg.se>
Denna översÀttning Àr fri dokumentation; lÀs GNU General Public License Version 3 eller senare för upphovsrÀttsvillkor. Vi tar INGET ANSVAR.
Om du hittar fel i översÀttningen av denna manualsida, skicka ett mail till Tp-sv@listor.tp-sv.se .