আমার একটি ঘুমন্ত বাশ স্ক্রিপ্ট cron
বুট থেকে শুরু হয়েছে । স্ক্রিপ্ট প্রতি মিনিটে জাগে এবং ইন্টারনেট থেকে প্রাপ্ত সূর্যোদয় এবং সূর্যাস্তের উপর ভিত্তি করে ল্যাপটপ প্রদর্শনের উজ্জ্বলতা সেট করে। পূর্ণ উজ্জ্বল এবং পূর্ণ ম্লান্ধের মধ্যে একটি ব্যবহারকারী কনফিগারযোগ্য রূপান্তর পর্বের জন্য পদক্ষেপগুলি 3 এবং 4, 5 বা প্রতি মিনিটে যা কিছু গণনা করা হয় তা হ্রাস করতে হবে।
অলি সংক্ষিপ্তভাবে pstree
তার উত্তরে স্পর্শ করেছিল তবে তা প্রত্যাখ্যান করেছিল কারণ এটি সমস্ত sleep
দৃষ্টান্তকে হত্যা করবে । Pstree অপশন ব্যবহার করে অনুসন্ধান সংকুচিত করে এড়ানো যায়।
ব্যবহার করে pstree -h
আমরা সম্পূর্ণ উত্তরাধিকারী দেখতে পাই:
$ pstree -h
systemd─┬─ModemManager─┬─{gdbus}
│ └─{gmain}
├─NetworkManager─┬─dhclient
│ ├─dnsmasq
│ ├─{gdbus}
│ └─{gmain}
├─accounts-daemon─┬─{gdbus}
│ └─{gmain}
├─acpid
├─agetty
├─atd
├─avahi-daemon───avahi-daemon
├─cgmanager
├─colord─┬─{gdbus}
│ └─{gmain}
├─cron───cron───sh───display-auto-br───sleep
├─cups-browsed─┬─{gdbus}
│ └─{gmain}
├─dbus-daemon
├─fwupd─┬─3*[{GUsbEventThread}]
│ ├─{fwupd}
│ ├─{gdbus}
│ └─{gmain}
├─gnome-keyring-d─┬─{gdbus}
│ ├─{gmain}
│ └─{timer}
├─irqbalance
├─lightdm─┬─Xorg───3*[{Xorg}]
│ ├─lightdm─┬─upstart─┬─at-spi-bus-laun─┬─dbus-daemon
│ │ │ │ ├─{dconf worker}
│ │ │ │ ├─{gdbus}
│ │ │ │ └─{gmain}
│ │ │ ├─at-spi2-registr─┬─{gdbus}
│ │ │ │ └─{gmain}
│ │ │ ├─bamfdaemon─┬─{dconf worker}
│ │ │ │ ├─{gdbus}
│ │ │ │ └─{gmain}
│ │ │ ├─chrome─┬─2*[cat]
│ │ │ │ ├─chrome─┬─chrome─┬─2*[chrome─┬─{Chrome_ChildIOT}]
│ │ │ │ │ │ │ ├─5*[{CompositorTileW}]]
│ │ │ │ │ │ │ ├─{Compositor}]
│ │ │ │ │ │ │ ├─{GpuMemoryThread}]
│ │ │ │ │ │ │ ├─{MemoryInfra}]
│ │ │ │ │ │ │ ├─{Renderer::FILE}]
│ │ │ │ │ │ │ ├─{TaskSchedulerRe}]
│ │ │ │ │ │ │ └─{TaskSchedulerSe}]
│ │ │ │ │ │ ├─7*[chrome─┬─{Chrome_ChildIOT}]
│ │ │ │ │ │ │ ├─5*[{CompositorTileW}]]
│ │ │ │ │ │ │ ├─{Compositor}]
│ │ │ │ │ │ │ ├─{GpuMemoryThread}]
│ │ │ │ │ │ │ ├─{MemoryInfra}]
│ │ │ │ │ │ │ ├─{Renderer::FILE}]
│ │ │ │ │ │ │ ├─{ScriptStreamerT}]
│ │ │ │ │ │ │ ├─{TaskSchedulerRe}]
│ │ │ │ │ │ │ └─{TaskSchedulerSe}]
│ │ │ │ │ │ ├─chrome─┬─{Chrome_ChildIOT}
│ │ │ │ │ │ │ ├─5*[{CompositorTileW}]
│ │ │ │ │ │ │ ├─{Compositor}
│ │ │ │ │ │ │ ├─{GpuMemoryThread}
│ │ │ │ │ │ │ ├─{Media}
│ │ │ │ │ │ │ ├─{MemoryInfra}
│ │ │ │ │ │ │ ├─{Renderer::FILE}
│ │ │ │ │ │ │ ├─{ScriptStreamerT}
│ │ │ │ │ │ │ ├─{TaskSchedulerRe}
│ │ │ │ │ │ │ └─{TaskSchedulerSe}
│ │ │ │ │ │ └─2*[chrome─┬─{Chrome_ChildIOT}]
│ │ │ │ │ │ ├─5*[{CompositorTileW}]]
│ │ │ │ │ │ ├─{Compositor}]
│ │ │ │ │ │ ├─{GpuMemoryThread}]
│ │ │ │ │ │ ├─{Renderer::FILE}]
│ │ │ │ │ │ ├─{ScriptStreamerT}]
│ │ │ │ │ │ ├─{TaskSchedulerRe}]
│ │ │ │ │ │ └─{TaskSchedulerSe}]
│ │ │ │ │ └─nacl_helper
│ │ │ │ ├─chrome─┬─chrome
│ │ │ │ │ ├─{Chrome_ChildIOT}
│ │ │ │ │ ├─{MemoryInfra}
│ │ │ │ │ ├─{TaskSchedulerSe}
│ │ │ │ │ └─{Watchdog}
│ │ │ │ ├─{AudioThread}
│ │ │ │ ├─{BrowserWatchdog}
│ │ │ │ ├─{Chrome_CacheThr}
│ │ │ │ ├─{Chrome_DBThread}
│ │ │ │ ├─{Chrome_FileThre}
│ │ │ │ ├─{Chrome_FileUser}
│ │ │ │ ├─{Chrome_HistoryT}
│ │ │ │ ├─{Chrome_IOThread}
│ │ │ │ ├─{Chrome_ProcessL}
│ │ │ │ ├─{Chrome_SyncThre}
│ │ │ │ ├─{CompositorTileW}
│ │ │ │ ├─{CrShutdownDetec}
│ │ │ │ ├─{D-Bus thread}
│ │ │ │ ├─{Geolocation}
│ │ │ │ ├─{IndexedDB}
│ │ │ │ ├─{LevelDBEnv}
│ │ │ │ ├─{MemoryInfra}
│ │ │ │ ├─{NetworkChangeNo}
│ │ │ │ ├─{Networking Priv}
│ │ │ │ ├─4*[{TaskSchedulerBa}]
│ │ │ │ ├─6*[{TaskSchedulerFo}]
│ │ │ │ ├─{TaskSchedulerSe}
│ │ │ │ ├─{WorkerPool/3166}
│ │ │ │ ├─{WorkerPool/5824}
│ │ │ │ ├─{WorkerPool/5898}
│ │ │ │ ├─{WorkerPool/6601}
│ │ │ │ ├─{WorkerPool/6603}
│ │ │ │ ├─{WorkerPool/7313}
│ │ │ │ ├─{chrome}
│ │ │ │ ├─{dconf worker}
│ │ │ │ ├─{extension_crash}
│ │ │ │ ├─{gdbus}
│ │ │ │ ├─{gmain}
│ │ │ │ ├─{gpu-process_cra}
│ │ │ │ ├─{inotify_reader}
│ │ │ │ ├─{renderer_crash_}
│ │ │ │ ├─{sandbox_ipc_thr}
│ │ │ │ └─{threaded-ml}
│ │ │ ├─compiz─┬─{dconf worker}
│ │ │ │ ├─{gdbus}
│ │ │ │ ├─{gmain}
│ │ │ │ └─8*[{pool}]
│ │ │ ├─conky───6*[{conky}]
│ │ │ ├─2*[dbus-daemon]
( .... many lines deleted to fit in 30k limit .... )
├─vnstatd
├─whoopsie─┬─{gdbus}
│ └─{gmain}
└─wpa_supplicant
আপনি দেখতে পাচ্ছেন একটি সাধারণ উবুন্টু লগইনটিতে অনেকগুলি পিআইডি (প্রসেস আইডির) থাকে।
আমরা এটি ব্যবহার করে এটি আমাদের চলমান স্ক্রিপ্টে সংকুচিত করতে পারি:
$ pstree -g -p | grep display-auto
|-cron(1198,1198)---cron(1257,1198)---sh(1308,1308)---display-auto-br(1321,1308)---sleep(26552,1308)
আমরা দেখি:
cron
একটি শেল শুরু হয়েছে (প্রক্রিয়া ID 1308 এবং সেশন ID 1308)
- শেলটি আমাদের প্রোগ্রামটিকে আইডি 1321 এবং সেশন আইডি 1308 (শেলের সাথে মিলে) এর অধীনে চলমান কল করে program
- আমাদের প্রোগ্রামটি
sleep
প্রক্রিয়া আইডির আওতায় 26552 এবং আবার সেশন আইডি 1308 কল করে
এই মুহুর্তে আমরা ব্যবহার করতে পারি pkill -s 1308
এবং এটি শেল, আমাদের প্রোগ্রাম display-auto-brightness
এবং sleep
কমান্ড সহ পুরো অধিবেশনটিকে হত্যা করে । পরিবর্তে আমরা kill 26552
কেবল ঘুমানোর কমান্ডটি ব্যবহার করে আমাদের প্রোগ্রামটিকে জাগ্রত করতে এবং উজ্জ্বলতা সামঞ্জস্য করতে বাধ্য করি।
টার্মিনালটিতে ম্যানুয়ালি এটিকে টাইপ করতে দেখেন:
───────────────────────────────────────────────────────────────────────────────
rick@dell:~$ pstree -g -p | grep display-auto
|-cron(1198,1198)---cron(1257,1198)---sh(1308,1308)---display-auto-br(1321,1308)---sleep(32362,1308)
───────────────────────────────────────────────────────────────────────────────
rick@dell:~$ sudo kill 32362
───────────────────────────────────────────────────────────────────────────────
rick@dell:~$ pstree -g -p | grep display-auto
|-cron(1198,1198)---cron(1257,1198)---sh(1308,1308)---display-auto-br(1321,1308)---sleep(1279,1308)
───────────────────────────────────────────────────────────────────────────────
rick@dell:~$ sudo kill 1279
───────────────────────────────────────────────────────────────────────────────
rick@dell:~$ pstree -g -p | grep display-auto
|-cron(1198,1198)---cron(1257,1198)---sh(1308,1308)---display-auto-br(1321,1308)---sleep(4440,1308)
───────────────────────────────────────────────────────────────────────────────
rick@dell:~$
পরবর্তী পদক্ষেপটি যখন ল্যাপটপ স্থগিত করা থেকে জেগে থাকে তখন তা করা। উদাহরণস্বরূপ, যখন idাকনাটি বন্ধ হয় তখন এটি পুরো গা dark় ছিল এবং পর্দার উজ্জ্বলতা "300" এ সেট করা হয়েছিল। Lাকনাটি খোলার পরে এটি দিবালোক হয় এবং উজ্জ্বলতা "2000" এ সেট করা দরকার। অবশ্যই প্রোগ্রামটি নিজের থেকে 1 থেকে 59 সেকেন্ডে জেগে উঠবে তবে তাত্ক্ষণিকভাবে উজ্জ্বলতা সেট করা এটি আরও আরামদায়ক।
আমি কোডটি লিখে দেওয়ার পরে স্থগিত / পুনঃসূচনা পোস্ট করব। আশা করি এই সপ্তাহান্তে।