Saya mencari cara sederhana untuk menentukan jumlah waktu kasar per hari yang saya habiskan di komputer. Ini bisa menjadi tugas yang sulit jika Anda mencoba memantau proses, penekanan tombol, klik mouse dan sejenisnya, karena orang dapat melakukan apa saja dari memikirkan masalah pengkodean, membaca artikel web, berbicara di telepon, atau pergi berjalan anjing. Komputer tidak bisa membaca pikiranku. Karena saya meninggalkan komputer pada 24/7 log-in pemantauan tidak akan berfungsi.
Saya menemukan ide untuk mencatat berapa banyak waktu yang dihabiskan komputer dalam mode screensaver. Kesalahan saya kemudian tidak akan lebih besar dari produk idle-time-to-screensaver dengan berapa kali ia masuk ke mode screensaver. Mengurangkan ini dari 24 jam akan memberi saya perkiraan yang masuk akal untuk tujuan saya.
Masalahnya adalah: Saya tidak tahu cara login ketika screensaver dihidupkan dan dimatikan. Saya menjalankan Ubuntu 10.10 saat ini di sebagian besar mesin, akan mulai memutakhirkan ke 11,04 pada beberapa dari mereka.
Ada ide?
[sunting] Setelah lebih banyak googling saya menemukan dbus-monitor yang sepertinya berfungsi, tetapi kehilangan bahan penting. Inilah skrip yang saya jalankan yang meluncurkan monitor sebagai daemon:
#!/bin/bash
RUNNING=`ps -A | grep "dbus-monitor"`
if [ ! $RUNNING ]; then
echo "(Re)starting dbus-monitor daemon"
nohup dbus-monitor "--profile" "type='signal',interface='org.gnome.ScreenSaver'" >> ${HOME}/sc.log &
fi
Ini adalah output yang dihasilkannya setelah mengunci dan membuka kunci layar beberapa kali:
sig 1304860712 153829 2 /org/freedesktop/DBus org.freedesktop.DBus NameAcquired
sig 1304860717 318732 462 /org/gnome/ScreenSaver org.gnome.ScreenSaver ActiveChanged
sig 1304860725 547928 463 /org/gnome/ScreenSaver org.gnome.ScreenSaver ActiveChanged
sig 1304861018 17 464 /org/gnome/ScreenSaver org.gnome.ScreenSaver ActiveChanged
sig 1304862919 403523 466 /org/gnome/ScreenSaver org.gnome.ScreenSaver ActiveChanged
Kolom kedua jelas unix UTC dalam hitungan detik. Bahan yang hilang adalah tidak mengidentifikasi apakah screensaver hidup atau mati! Saya kira saya bisa berasumsi mereka beralih dari saat NameAcquired terjadi, tetapi itu membuat saya mual bahwa mungkin ada peristiwa yang hilang atau tambahan yang tidak dapat saya antisipasi yang akan membuat semuanya tidak sinkron.
Banyak diwajibkan untuk ide.
jkcunningham
sumber
Jawaban:
Saya ingin mengucapkan terima kasih dan berkontribusi kembali skrip sederhana, mentah (dapat ditingkatkan), letakkan di aplikasi startup dengan:
itu sistem crash / blackout disiapkan juga. Itu tidak diuji di surga ... tetapi bekerja dengan baik sampai sekarang. itu akan membuat 2 file, satu di $ HOME (log) yang lain di / tmp (solusi crash sys)
logSessionLock.sh
lognya seperti ini:
sumber
Paket " Workrave " tidak hanya melacak apakah Anda menggunakan komputer dan membantu Anda beristirahat di siang hari, tetapi juga menyediakan serangkaian statistik yang bagus, baik mentah (dalam file teks) dan melalui GUI (
Daily usage: 5:41:00 for Jul 21
). Statistik ini juga mencakup hal-hal seperti menit penggunaan mouse, jarak pergerakan mouse, penekanan tombol dll.Instal dari repositori resmi, tambahkan ke bilah menu Anda, klik kanan dan pilih "statistik". Anda akan mendapatkan kalender untuk memilih hari yang ingin Anda ketahui. Atau lihat data di ~ / .workrave / historystats
sumber
Jika Anda menghapus --profile Anda akan mendapatkan format cap waktu yang hilang, tetapi memiliki apakah screensaver aktif atau tidak.
Saya telah menggunakan modifikasi skrip PHP ini untuk mengaktifkan atau menonaktifkan hal-hal berdasarkan screensaver saya
Pilihan lainnya adalah menggunakan
gnome-screensaver-command --query
. Menggunakan crontab, saya membiarkan bitcoin menggunakan semua 4 core ketika screensaver aktif, tetapi hanya mendapat 1 inti ketika saya menggunakan komputer saya.DISPLAY: Tanpa pengaturan DISPLAY gnome-screensaver-command tidak akan dapat menemukan layar saat dijalankan dari cron. Ini harus dijalankan ketika pengguna yang sama masuk.
2>&1
: Ini mengarahkan kesalahan apa pun ke dalam output standar, yang ditangkap oleh ...| grep -q 'is active';
: -q membuat grep diam, tidak menghasilkan apa-apa. Tetapi perintah mengembalikan keberhasilan atau kegagalan yang digunakan oleh if.Saya menyadari tidak satupun dari ini adalah solusi yang lengkap, tetapi mudah-mudahan itu cukup untuk memulai.
sumber
Ini adalah skrip yang lebih lengkap. Anda dapat memicu dari cron setiap menit dan jika screensaver aktif, itu akan merekam berapa lama itu aktif. Setelah dinonaktifkan, ia akan melakukan pengukuran terakhir dan menambahkannya ke ~ / Screensaver.log. Jika Anda menjalankannya dari cron, itu mungkin tidak akurat hingga 59 detik setiap kali screensaver dinonaktifkan.
sumber
date "+%Y %m %d %H %M
echo "$ SS_LAG $ DSTR" >> $ {HTDOCS} /data/work.log fidate "+%Y %m %d %H %M
echo "$ SS_LAG $ DSTR" >> $ {HTDOCS} /data/work.log fi [/ code] Saya berikan: bagaimana Anda membuat blok kode dalam komentar? 4 ruang tidak berfungsi.Saya menggunakan
uptime
perintah, tetapi tidak memberikan waktu aktif / tidak aktif sistem. uptime memberikan tampilan satu baris dari informasi berikut. Waktu saat ini, berapa lama sistem telah berjalan, berapa banyak pengguna yang sedang login, dan rata-rata memuat sistem selama 1, 5, dan 15 menit terakhir.sumber