লিনাক্সে সিস্টেম শুরুর তারিখ এবং সময় পাওয়া


44

আমি জানি যে uptimeকোনও মেশিন চালু এবং চলমান সময় প্রিন্ট করে, তবে এই আউটপুট থেকে নিচে গণনার চেয়ে শুরু করার তারিখটি পাওয়ার কী সহজ (নির্ভরযোগ্য) উপায় আছে?

আমি আশেপাশে দেখার চেষ্টা করেছি /proc, তবে প্রাসঙ্গিকতার কোনও কিছুই পাইনি। আমার মতো একটি লাইনও রয়েছে dmesg:

[    0.673492] rtc_cmos rtc_cmos: setting system clock to 2011-03-14 14:26:52 UTC (1300112812)

তবে আমি ভাবছি এই পদ্ধতিটি যদি বিতরণ এবং কার্নেলের সংস্করণ অজ্ঞেয়?


কি unreliable or hardসম্পর্কে uptime?
ববি

2
@ ববি: কমান্ড বা সেফের জন্য এটির কার্যকারিতা সম্পর্কে কিছুই নয়, তবে যেমনটি বলা হয়েছিল আমি শেষ সিস্টেম বুটের তারিখ এবং সময় পেতে চাই, তার পরে কতদিন হয়নি not uptime"13 দিন, 21:01" এর মতো একটি স্ট্রিং প্রদান করে এবং আপনাকে এটি থেকে এটি গণনা করতে হবে।
jho

4
এটি আপটাইম মান থেকে ফিরে গণনা তুচ্ছ। আপনি যদি নির্ভরযোগ্য চান , আপনি চান /proc/uptime
সাম হোচেভার

উত্তর:


40

আমি কিছু কমান্ড পাওয়া এখানে । চেষ্টা করুন who -bবা last reboot | head -1
whoসংখ্যার তারিখ দেয়, যখন last rebootসংক্ষিপ্ত দিন / মাসের নাম দেয়।


কীভাবে আমরা যদি কেবল তারিখ এবং অন্য কিছু চাই না?
T0xicCode

4
who -b | cut -d' ' -f13আয় শুধুমাত্র (-f14 আয় সময়) DATE
charlesbridge

2
সতর্কতা: last rebootআমাকে সঠিক তারিখ দেয় নি! who -bকরেছিল.
qwertzguy

last rebootআমাকেও একটি ভুল তারিখ দিয়েছে, wtmp মনে হয়েছিল মাসের প্রথম দিনটি ঘোরে হয়েছে
golimar

23

এটি কার্নেল থেকে আপটাইম অনুসন্ধান করে এবং স্থানীয় সময় অঞ্চলে এটি প্রদর্শন করে:

date -d "`cut -f1 -d. /proc/uptime` seconds ago"

অন্যান্য বিকল্প সম্পর্কে সতর্কতা অবলম্বন করুন। lastকমান্ড কাজ যত তাড়াতাড়ি বন্ধ হবে wtmpআবর্তিত হয়েছে। whoকমান্ড প্রাপ্যতা এবং অখণ্ডতা উপর নির্ভর করে utmp। এবং /proc/1বুট সময়ের তারিখের পরিবর্তে বর্তমান তারিখ থাকতে পারে এবং একটি শক্ত সিস্টেমে অনুপলব্ধ হতে পারে। সম্পাদনা করুন : dmesgকেবলমাত্র একটি নির্দিষ্ট দৈর্ঘ্যের ব্যাক বাফার রয়েছে, সুতরাং এটিও অযোগ্য is কার্নেল লগগুলি থাকতে পারে /var/logতবে বেশিরভাগ বিতরণ কেবলমাত্র 8 সপ্তাহ রাখে।


1
মজার বিষয় হল, who -bএটি আমার 210-দিনের-আপটাইম সিস্টেমে এক বা দুই মিনিটের সাথে একমত নয় । who -bটাইম স্ট্যাম্পের প্রতিবেদনের মতো মনে হচ্ছে , যদিও এই গণনাটি কোনওভাবে ক্লক ড্রিফ দ্বারা প্রভাবিত হয়, এমনকি যদি এগুলি সময়ক্রমে কোনও দৌড় দ্বারা সংশোধন করা হয় ntpd
রুসলান

3
সমস্ত বিকল্প উত্তর পর্যালোচনা করে, স্থির করে: date -d "`cut -f1 -d. /proc/uptime` seconds ago" -u(যা ইউটিসিতে সময় / তারিখ রয়েছে)
ডেভিড 6

সংক্ষিপ্ত উত্তর। কার্নেলটি না জানলে, কেউ জানে না - এটি সিস্টেমের সত্যতার উত্স। সেকেন্ডগুলি সময়ের গণনা সম্পাদন করা সহজ করে তোলে (আমি এটায় হোঁচট খেয়েছি কারণ আমি জানতে চাই "আমার হোস্টগুলির মধ্যে কে শেষ দিনের মধ্যে পুনরায় চালু হয়নি [86,400 সেকেন্ড]?")
মাইক এস

17

ধারাবাহিক, পার্সেবল বুট সময় পাওয়ার জন্য উপায় খুঁজতে গিয়ে আমি এই প্রশ্নে হোঁচট খেয়েছি, বুট হওয়ার পরে সময়ের বিপরীতে যা প্রতিটি কলে পরিবর্তিত হয়।

এটি uptime -sবেশিরভাগ লিনাক্স সিস্টেমে কৌশলটি করবে বলে মনে হয়।


uptime -sআউটপুট যেমন 2017-08-09 01:23:45। সবচেয়ে সহজ, সরল হয়ে। এই কমান্ডটি "প্রোপস" প্যাকেজটিতে অন্তর্ভুক্ত রয়েছে।
টিকা কাজুরা

uptimeসেন্টওএস 6 (এ procps version 3.2.8) দুঃখিতভাবে এই সমর্থন করার জন্য, মনে হচ্ছে না।
mwfearnley

uptime -sসর্বদা স্থির ফলাফলগুলি ফেরত দেয় না: superuser.com/q/1247713/71144
cweiske

1
মনে রাখবেন যে এটি সর্বদা লোকালটাইমে থাকে তবে এটি আসলে টাইমজোন / অফসেট প্রিন্ট করে না। সুতরাং, আপনি যদি প্রোগ্রাম থেকে মেশিনগুলি থেকে এটি টানতে দেখেন তবে এটি আদর্শ নয়, কারণ আপনার ব্যবহারের ক্ষেত্রে নির্ভর করে আপনাকে আলাদাভাবে তাদের সময় অঞ্চল নির্ধারণ করতে হবে। সুতরাং, আমি অন্যান্য উত্তরগুলির কয়েকটি প্রস্তাব করব।
জেজেসি

11

কিছুক্ষণ হাঁসফাঁস করার সময় আমি btimeলাইনটি পেয়েছি/proc/stat

cat /proc/stat | grep btime | awk '{ print $2 }'

এবং দ্রুত অনুসন্ধানের পরে, আমি এই পৃষ্ঠাটি পেয়েছি: / proc / স্ট্যাটাস ব্যাখ্যা করেছে , যা " /proc/statফাইলটিতে উপলব্ধ কার্নেল ক্রিয়াকলাপ সম্পর্কে বিভিন্ন ধরণের তথ্যের রূপরেখা দেয়" ।

"বিটাইম" লাইনটি ইউনিক্সের সূচনাকালীন কয়েক সেকেন্ড পরে সিস্টেমটি বুট করার সময় দেয়।


1
অনেক লিখতে সহজ মনে হয়awk '/btime/{print $2}' /proc/stat
উইলিয়াম Pursell

@ উইলিয়ামাম পার্সেল সবচেয়ে সহজ যা আপনি ইতিমধ্যে জানেন always আমি কোন অ্যাড উইজার্ড নই : পি
ওডস্ট্রস্ট্র

ভাল যুক্তি. তবে, আপনি কৃত্রিমভাবে বিড়াল ব্যবহার করেছেন। ফাইলটি থেকে গ্রেপ করুন।
মাইক এস

@ মাইকেস সঠিক - তবে আমি আমার উত্তর কমান্ড চেইনের পাশে এখনও তথ্যের সন্ধান পেয়েছি তার উত্তরের 7 বছর পরেও যেখানে তথ্য পাওয়া গেছে তার স্পষ্ট উপস্থাপনা হিসাবে।
Oddstr13

8
  • ভাল : uptime -s, who -bবা পার্স/proc/uptime
  • খারাপ : ls -ld /proc/1এবং রূপগুলি।

এই উদ্দেশ্যে ls -ld / proc / 1 ব্যবহার করবেন না। এটি কখনও কখনও s2disk বা s2ram পরে আপডেট হয়।

আমার ক্ষেত্রে, who -bবলেছেন:

সিস্টেম বুট 2 মে 09:51

যখন ls -ld /proc/1:

dr-xr-xr-x 7 মূল রুট 0 মে 3 13:09 / proc / 1

ls -ldজন্য /procবা /sysপুনরায় শুরু করার পরেও অবিচলিত মনে হয় তবে এটি বাস্তবায়ন নির্ভর, এবং ভবিষ্যতে পরিবর্তিত হতে পারে, সুতরাং এই জাতীয় পদ্ধতি ব্যবহার করবেন না। এবং যদি আপনার সিস্টেমের ঘড়িটি ইউটিসি নয়, স্থানীয় সময়ে হয় তবে তাদের নেতিবাচক অফসেট রয়েছে।

(আমার কাছে এখনও উত্তরগুলিতে মন্তব্য করার সৌভাগ্য নেই, তাই নতুন উত্তর খুলেছি Sorry দুঃখিত))

সম্পাদনা: মাইক্রগ্রিলিং দ্বারা uptime -sপ্রথমে এই উত্তরে উত্তর দেওয়া হয়েছিল


2

সবচেয়ে সহজ উপায় হ'ল / sbin / init কখন শুরু হয়েছিল তা দেখার জন্য (কার্নেল লোডের পরে এটি সর্বপ্রথম প্রক্রিয়া শুরু হয়):

# ls -ld /proc/1
dr-xr-xr-x 7 root root 0 2011-03-27 23:54 /proc/1

সুতরাং আমি দেখতে পাচ্ছি যে আমার মেশিনটি ২১ শে মার্চ ২০১১-তে minutes মিনিট থেকে মধ্যরাত পর্যন্ত বুট আপ হয়েছে।

আপনি যদি এটি স্ক্রিপ্টিংয়ে ব্যবহার করতে চান তবে statপরিবর্তে কমান্ডটি ব্যবহার করতে পারেন :

# stat --printf='%Y' /proc/1
1301266491

%Yকাল (1/1/70) যেহেতু নির্দিষ্ট করে সময় থেকে ডিরেক্টরির গত পরিবর্তন করা হয়েছে (প্রক্রিয়া সৃষ্টি সময়) সেকেন্ডের মধ্যে এবং একটি প্রমিত UNIX টাইমস্ট্যাম্প হয়।


1
দুর্ভাগ্যক্রমে এটি কাজ করে না: এই ফোল্ডারে থাকা মাইমটাইম অন্যান্য কারণেও বদলে যেতে পারে (আমার এখানে একটি সিস্টেম রয়েছে যা 5 দিনের আপটাইম এবং / প্রো / 1 এর
এমটাইম

1
এটি নির্ভরযোগ্য নয় , যেমনটি আমার উত্তরে
teika kazura

1

লিনাক্সে,

ls -ld /proc

আমার যা প্রয়োজন তা আমাকে দেবে বলে মনে হচ্ছে উপরের পোস্টটি বিজোড়। /proc/uptimeকোনও তারিখের মান থাকে না - এটি বর্তমান সময় থেকে বিয়োগ করতে হবে। সম্ভবত তিনি বোঝাতে চেয়েছিলেন:

date -d @$(( $(date +%s) - $(cut -f1 -d. /proc/uptime) ))

uptime -sএকটি তারিখের মান সরবরাহ করে
মাইক্রগ্রিলিং

1

বাশের অধীনে, পাইপ বা অন্যান্য প্রক্রিয়া ছাড়াই; শুধু পাঠ্য:

$ REPLY="$(</proc/uptime)"
$ REPLY="${REPLY%%.*}"
$ echo "$REPLY"
31207

(কেবলমাত্র REPLYডিফল্ট ভেরিয়েবলটি পুনরায় ব্যবহার করা হয়েছে তবে আপনি যা প্রয়োজন তা চয়ন করতে পারেন)


অবশ্যই, কেন না? পরিবর্তনশীল সাবস্ট্রিনিয়েন্সের কিনার চালাক ব্যবহার। কুল। +1 টি। ধারণার জন্য ধন্যবাদ!
মাইক এস

1

এটি শক্তিশালী বলে মনে হচ্ছে এবং এটি আপনাকে ইউটিসি এবং আইএসও 8601 ফর্ম্যাটে দেবে। (যথাক্রমে অক্ষম করতে শেষ দুটি বিকল্প অপসারণ করুন):

date -d "`cut -f1 -d. /proc/uptime` seconds ago" -u -Iseconds

0
date -d @$(sed -n '/^btime /s///p' /proc/stat)

(এটি করার আরও একটি উপায় যা নির্দিষ্ট পরিস্থিতিতে কার্যকর)


0

COMMAND:

(echo ' Currently:' | tr "\n" ' ' ; date +"%Y-%m-%d %k:%M:%S" ; echo '  Up Since:' | tr '\n' ' ' ; uptime -s ; echo '  Duration:' | tr '\n' ' ' ; uptime -p)

আউটপুট:

 Currently: 2016-05-09  9:06:29
  Up Since: 2016-05-04 12:56:04
  Duration: up 4 days, 20 hours, 10 minutes

0

টুপটাইম কমান্ড সহ পরিষ্কার এবং সংক্ষিপ্ত :

# tuptime -t
No.             Startup Date                                          Uptime            Shutdown Date   End                    Downtime

1     09:43:39 AM 08/08/2017      41 days, 0 hours, 51 minutes and 2 seconds   10:34:41 AM 09/18/2017    OK                  10 seconds
2     10:34:51 AM 09/18/2017                         1 minute and 16 seconds   10:36:07 AM 09/18/2017    OK                    1 second
3     10:36:08 AM 09/18/2017                       13 minutes and 20 seconds   10:49:28 AM 09/18/2017    OK                   3 seconds
4     10:49:31 AM 09/18/2017       45 days, 0 hours, 1 minute and 20 seconds   09:50:51 AM 11/02/2017    OK                   4 seconds
5     09:50:55 AM 11/02/2017                       27 minutes and 25 seconds   10:18:20 AM 11/02/2017    OK                   4 seconds
6     10:18:24 AM 11/02/2017                                       9 seconds   10:18:33 AM 11/02/2017    OK                   9 seconds
7     10:18:42 AM 11/02/2017      4 days, 5 hours, 41 minutes and 47 seconds   04:00:29 PM 11/06/2017    OK                  44 seconds
8     04:01:13 PM 11/06/2017    15 days, 17 hours, 33 minutes and 48 seconds   09:35:01 AM 11/22/2017   BAD   10 minutes and 40 seconds
9     09:45:41 AM 11/22/2017               8 hours, 9 minutes and 20 seconds   05:55:01 PM 11/22/2017   BAD     7 minutes and 8 seconds
10    06:02:09 PM 11/22/2017                1 hour, 7 minutes and 54 seconds   07:10:03 PM 11/22/2017   BAD   11 minutes and 30 seconds
11    07:21:33 PM 11/22/2017               1 hour, 58 minutes and 32 seconds   09:20:05 PM 11/22/2017    OK                   5 seconds
12    09:20:10 PM 11/22/2017                       14 minutes and 52 seconds   09:35:02 PM 11/22/2017   BAD    5 minutes and 52 seconds
13    09:40:54 PM 11/22/2017                         4 minutes and 6 seconds   09:45:00 PM 11/22/2017   BAD    4 minutes and 51 seconds
14    09:49:51 PM 11/22/2017             11 hours, 15 minutes and 10 seconds   09:05:01 AM 11/23/2017   BAD    7 minutes and 20 seconds
15    09:12:21 AM 11/23/2017      3 days, 2 hours, 17 minutes and 40 seconds   11:30:01 AM 11/26/2017   BAD   27 minutes and 44 seconds
16    11:57:45 AM 11/26/2017   109 days, 19 hours, 12 minutes and 37 seconds   07:10:22 AM 03/16/2018    OK                  17 seconds
17    07:10:39 AM 03/16/2018     25 days, 3 hours, 55 minutes and 59 seconds   12:06:38 PM 04/10/2018    OK                   3 seconds
18    12:06:41 PM 04/10/2018      8 days, 19 hours, 3 minutes and 20 seconds   07:10:01 AM 04/19/2018   BAD    3 minutes and 52 seconds
19    07:13:53 AM 04/19/2018     77 days, 9 hours, 44 minutes and 39 seconds
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.