Vraag Tijdzone instellen vanaf terminal


Ik wil de tijdzone van de systeemklok vanaf de terminal wijzigen.

Dit kan gedaan worden met

tzselect

"die een gui opent in terminal"

of

sudo cp /usr/share/zoneinfo/Europe/London /etc/localtime

"die zal instellen op gmt"

Maar is er een manier om de tijdzone in te stellen met alleen de offset ie.-1 of +5 enz?

Ik moet dit doen terwijl ik een applicatie aan het schrijven ben om tijdoffset- of rapportlogboeken aan te passen en de enige info die ik heb, is het gebruikers-IP. Ik kan een webapp gebruiken om de locatie van het IP te vinden, maar dan moet ik een offset instellen die gemakkelijk zou zijn ALS ik gewoon de offset van de locatie zou kunnen krijgen, maar als ik zone en stad moet vinden, zou het een echte pijn zijn .

Als iemand weet dat het antwoord op het instellen van de systeemklok met +/- uur geweldig zou zijn.


174
2017-07-22 20:22


oorsprong


Help ons alstublieft om het geaccepteerde antwoord op te pikken. Ik denk dat het antwoord van @ Mitch de beste is askubuntu.com/a/323163/22308 - Nam G VU
@NamGVU Nee, Mitch's is niet de beste oplossing, het is een antwoord "GUI in a terminal". Zelfs het OP zei "dit zal niet werken als ik tijdzone moet verlaten vanuit een programma zonder gebruikersinvoer. Ik heb een commando nodig dat ik kan voeden in terminal niet gui-oplossing", en dat is hetzelfde doel dat de meesten zouden willen als ze op zoek zijn naar een "terminaloplossing", een scriptvriendelijke. Collin Anderson's is beter als u een stad kent, of Ryan's voor gewone GMT + -n - Xen2050


antwoorden:


Als u de tijdzone van de terminal wilt wijzigen, drukt u gewoon op Ctrl+alt+T op je toetsenbord om Terminal te openen. Wanneer het wordt geopend, voert u de onderstaande opdracht (en) uit:

sudo dpkg-reconfigure tzdata

Na het openen volgt u gewoon de schermen om de tijdzone te wijzigen.


274
2017-07-22 22:02



Dit is de eenvoudigste, meest pijnloze methode. - Thomas Ward♦
dit zal niet werken aangezien ik tijdzone van een programma moet verlaten zonder gebruikersinput ik heb een bevel nodig dat ik in terminal niet gui oplossing kan voeden dank voor antwoord - user2155009
@ user2155009 heel eenvoudige niet-GUI puur Op Terminal gebaseerde oplossing bevindt zich in Collin Anderson's antwoord. Ik begrijp niet waarom iemand een GUI-antwoord zou geven op een Terminal-vraag. Als we een GUI wilden gebruiken, hadden we sowieso al een GUI gebruikt, Terminal niet vanuit GUI gelanceerd en daarna een GUI van Terminal gelanceerd ... - ADTC
Dankje!!! dit helpt, omdat ik al handmatig ben veranderd etc / tijdzone =) leuk vinden php.net/manual/en/timezones.php !!! absoluut identiek !!! - Vladimir Ch
@ADTC Precies mijn gedachten, die om die reden zijn neergelegd. - Elijah Lynn


U kunt ook het nieuwe gebruiken timedatectl om de tijd in 14.04 in te stellen.

sudo timedatectl set-timezone America/New_York

141
2017-09-15 15:43



Hoe installeer je het op ubuntu? - Division by Zero
Het is standaard geïnstalleerd op 14.04. - Collin Anderson
Om alle beschikbare opties te bekijken, kunt u uitvoeren ls -R --group-directories-first /usr/share/zoneinfo. (Pas op dat u hier geen bestand wijzigt of wist.) Meer info over posix en right voorvoegsels is hier. - ADTC
Dit werkt! ... - Dan Nissenbaum
Gebruik sudo timedatectl set-timezone Etc/UTC voor UTC. - Zoltán


U kunt de GMT ± gebruikenX bestanden in /usr/share/zoneinfo/Etc.

sudo ln -fs /usr/share/zoneinfo/Etc/GMT$offset /etc/localtime

17
2017-07-22 20:43



heel erg bedankt voor het antwoord im het krijgen van een fout ln: kon symbolische link `/ etc / localtime 'niet maken: Bestand bestaat oboiusly ik weet niet zeker wat ik doe ken je goede tutorial hiervoor of zelfs enkele sleutelwoorden ik kan google bedankt ben ik gebruik van het commando correct? ik gebruik sudo ln / usr / share / zoneinfo / Etc / GMT $ + 1 / etc / localtime om de klok in te stellen op + 1 gmt - user2155009
minitech vergat de force-vlag denk ik zo -> sudo ln -sf .... - Tele
Dit zal een beetje werken, maar zal de tz-naam niet bijwerken /etc/timezone. - poolie


Ik besef dat deze thread enigszins gedateerd is, maar ik was op zoek naar een betere oplossing omdat ik automatisch de tijdzone in een VM moest instellen nadat een gebruiker deze van onze website heeft gedownload en geïmplementeerd. Dit is wat ik uiteindelijk heb gedaan:

echo "Setting TimeZone..."
export tz=`wget -qO - http://geoip.ubuntu.com/lookup | sed -n -e 's/.*<TimeZone>\(.*\)<\/TimeZone>.*/\1/p'` &&  timedatectl set-timezone $tz
export tz=`timedatectl status| grep Timezone | awk '{print $2}'`
echo "TimeZone set to $tz"

Hiermee wordt geoip.ubuntu.com opgevraagd vanaf de server zodra deze is gestart op het nieuwe netwerk (mijn script controleert eerst de eerste verbindingsklasse) en stelt vervolgens de tijdzone van de server in op basis van het antwoord.

De "wget ​​-q0 -" vertelt wget om alleen de resultaten naar stdout uit te voeren die dan naar de $ tz-variabele wordt gevoerd.

Ik hoop dat het iemand helpt!


16
2017-12-25 03:22



Super goed! Op Ubuntu 16.04 zou het in plaats daarvan "grep zone" en "print $ 3" ​​moeten zijn. - user334639
Ik stel een andere cli voor om de tijdzone te krijgen. Een beetje schoner in mijn ogen: curl -s 'geoip.ubuntu.com/lookup'; | xmllint --xpath '/ Response / TimeZone / text ()' - - Darko Miletic


TL; DR  /etc/localtime is een symbolische koppeling die naar een bestand verwijst /usr/share/zoneinfo/Continent/City. Door te wijzigen waar het wijst, kunt u uw tijdzone wijzigen.

Om de tijdzone te veranderen, verwijdert u de /etc/localtime en wijs een symbolische link toe aan uw gewenste stad. Bijvoorbeeld, ls -l /etc/localtime meldt dat dit bestand verwijst naar /usr/share/zoneinfo/America/Denver. Om het in New York te veranderen, doe ik het

  1. sudo rm /etc/localtime
  2. sudo ln -s /usr/share/zoneinfo/America/New_York /etc/localtime
  3. Wacht even voordat mijn klok is bijgewerkt

Het screenshot hieronder toont de stappen en bevestiging van timedatectl

enter image description here


10
2018-05-06 02:21



het is leuk om te begrijpen wat er achter het gordijn gebeurt, maar vind je niet dat het beter is om de aangewezen tools voor dit soort dpkg-reconfiguratie tzdata etc. aan te bevelen? - Patrick Cornelissen
@PatrickCornelissen Allereerst zijn er antwoorden voor tzdata al, dus suggereren dat hetzelfde zinloos is. Tweede, tzdata doet vrijwel hetzelfde. Het is aan de gebruiker om te beslissen wat hij of zij prefereert, dus het is niet beter of slechter - alleen de voorkeur van een persoon. - Sergiy Kolodyazhnyy
Wel, werken "tegen" de distributiehulpmiddelen leidt vaak tot problemen, dus ik zou je aanpak zo mogelijk vermijden, maar eerlijk gezegd zou jouw oplossing (op dit moment) werken - Patrick Cornelissen
Deze oplossing werkt, zoals ik het begrijp, op verschillende distributies. Maar er is nog steeds de tijdzone-database beschikbaar in de map / usr / share / zoneinfo. Is er een manier om de tijdzone-database te krijgen zonder tzdata-pakket te installeren? - andho
@andho Since /var/lib/dpkg/info/tzdata.list suggereert dat alle items in /usr/share/zoneinfo kom met dat pakket, ik neem aan dat je het pakket moet installeren om alle items te hebben, maar eerlijk gezegd ben ik niet helemaal zeker, plus niet helemaal bekend met hoe dit werkt op andere distributies. Overweeg dit als een vraag te stellen Unix en Linux, en voel je vrij om te verwijzen naar dit bericht als je context wilt bieden voor de vraag. - Sergiy Kolodyazhnyy


De eenvoudige manier om de tijdzone bij te werken is om te gebruiken sudo dpkg-reconfigure tzdata. Maar dit is niet zo gemakkelijk geschreven.

Als u de tijdzone expliciet via een script wilt instellen (bijvoorbeeld voor het instellen van een VM), volgt hier een recept:

Stel een variabele in voor de tijdzone die u wilt, bijvoorbeeld een van de

tz=Europe/London
tz=America/Anchorage
tz=Etc/GMT+6

Geldige waarden zijn de mappen en bestandsnamen onder /usr/share/zoneinfo.

Dan gewoon

sudo cp -vf /usr/share/zoneinfo/$tz /etc/localtime
echo $tz | sudo tee /etc/timezone

Merk op dat beide /etc/localtime en /etc/timezone moet consistent zijn.

Waarschijnlijk wordt nu opnieuw opgestart om al uw services ook bijgewerkt te laten worden (bijvoorbeeld cron).


10
2018-05-13 18:13



-1: nooit gebruiken cp om / etc / localtime in te stellen. / etc / localtime is a symlink naar het juiste bestand. Als je gebruikt cp om het te veranderen, zal je eigenlijk de inhoud van welk tzdata-bestand waarnaar het verwijst, vergelijken, zo plotseling (bijvoorbeeld) bevat het UTC tzdata-bestand tijdzone-gegevens voor Europa / Londen in plaats van voor UTC, wat slecht is (en vervelend om problemen op te lossen, zoals ik kan zeggen vanuit persoonlijke ervaring) - Foogod


Dit is de methode die ik gebruik, namelijk Amerikaans gericht, want ik hoef me geen zorgen te maken over niet-Amerikaanse tijdzones.

Als ik de huidige tijdzone moet bepalen, doe ik het volgende:

cat /etc/timezone  

of

sudo hwclock --show  

Ik doe dan:

timedatectl set-timezone <_designation_>

waar <_designation_> is een van de volgende:

US / Eastern
US / Central
VS / Mountain
US / Pacific
US / Alaska
VS / Aleutian
VS / Arizona
US / Oost-Indiana
US / Hawaii
US / Indiana-Starke
US / Michigan
US / Pacific-New
VS / Samoa

bijv .:

timedatectl set-timezone US/Eastern  

Andere tijdzone-aanduidingen zijn hier te vinden: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones


3
2018-03-29 19:04





U kunt dit niet doen tenzij u het tijdzonebestand selecteert dat u wilt laten corresponderen met elke tijdzoneverschuiving.

Sommige antwoorden stelden voor om de bestanden in / usr / share / zoneinfo / Etc te gebruiken, maar het probleem hiermee is dat ze agendostimulatief werken.

Dus tenzij u een tijdzone-configuratie kiest die overeenkomt met elke offset, of als u zich niet druk maakt om zomertijd, kunt u dit generiek niet doen.


0
2017-08-23 17:52