আমি এর জন্য কিছুটা অনুসন্ধান করেছি এবং সাহায্যকারী কিছুই খুঁজে পাচ্ছি না।
30 মিনিটের নিষ্ক্রিয়তার পরে স্থগিত করার জন্য আমার পিসি উবুন্টু 12.10 চলছে। আমি এটি পরিবর্তন করতে চাই না, এটি বেশিরভাগ সময় দুর্দান্ত কাজ করে।
আমি যা করতে চাই তা হ'ল কোনও নির্দিষ্ট অ্যাপ্লিকেশন চলমান থাকলে স্বয়ংক্রিয় স্থগিতটি অক্ষম করে। কিভাবে আমি এটি করতে পারব?
আমি এখন পর্যন্ত সবচেয়ে কাছের জিনিসটি পেয়েছি হ'ল একটি শেল স্ক্রিপ্ট যুক্ত করা /usr/lib/pm-utils/sleep.d
যাতে অ্যাপ্লিকেশনটি চলছে কিনা তা পরীক্ষা করে এবং স্থগিত হওয়া রোধ করা উচিত কিনা তা বোঝাতে 1 ফেরত দেয়। তবে দেখে মনে হচ্ছে সিস্টেমটি আরও 30 মিনিটের পরে আবার চেষ্টা করার পরিবর্তে স্বয়ংক্রিয়ভাবে স্থগিত হওয়া ছেড়ে দেয়। (যতদূর আমি বলতে পারেন, যদি আমি মাউস সরানো, যে পুনরায় আরম্ভ টাইমার আবার।) এটা বেশ সম্ভবত আবেদন ঘন্টা দুয়েক পরে শেষ হবে, এবং আমি বরং আমার পিসিতে তখন স্বয়ংক্রিয়ভাবে স্থগিত চাই যদি আমি ব্যবহার করছি না এটা এই মুহুর্তে । (সুতরাং অ্যাপ্লিকেশন শেষ হয়ে গেলে আমি বিকাল-সাসপেন্ডে একটি কল যুক্ত করতে চাই না))
এটা কি সম্ভব?
সম্পাদনা: আমি নীচের মতামতগুলির একটিতে উল্লেখ করেছি যে, আমার পিসি যখন এনএফএসের উপর ফাইল সরবরাহ করছিল তখন আমি যা স্থিতি করতে চাইছিলাম তা স্থগিত করা বাধা দেওয়া; আমি কেবল প্রশ্নের "স্থগিত" অংশটির দিকে মনোনিবেশ করতে চেয়েছিলাম কারণ এনএফএস অংশটি কীভাবে সমাধান করবেন তা আমার ইতিমধ্যে ধারণা ছিল। উত্তরের একটিতে দেওয়া 'এক্সডটুল' ধারণাটি ব্যবহার করে, আমি নিম্নলিখিত স্ক্রিপ্টটি নিয়ে এসেছি যা প্রতি কয়েক মিনিটের মধ্যে ক্রোন থেকে চালিত হয়। এটি আদর্শ নয় কারণ এটি স্ক্রিনসেভারটিকেও লাথি মারা বন্ধ করে দেয় তবে এটি কার্যকর হয়। 'ক্যাফিন' কেন পরে স্থগিতাদেশটিকে সঠিকভাবে পুনরায় সক্ষম করে না সে সম্পর্কে আমার একবার নজর দেওয়া দরকার, তবে আমি সম্ভবত আরও ভাল করতে পারি। যাইহোক, এটি কাজ করে বলে মনে হচ্ছে, তাই অন্য কারও আগ্রহী হলে আমি এটি এখানে অন্তর্ভুক্ত করছি।
#!/bin/bash
# If the output of this function changes between two successive runs of this
# script, we inhibit auto-suspend.
function check_activity()
{
/usr/sbin/nfsstat --server --list
}
# Prevent the automatic suspend from kicking in.
function inhibit_suspend()
{
# Slightly jiggle the mouse pointer about; we do a small step and
# reverse step to try to stop this being annoying to anyone using the
# PC. TODO: This isn't ideal, apart from being a bit hacky it stops
# the screensaver kicking in as well, when all we want is to stop
# the PC suspending. Can 'caffeine' help?
export DISPLAY=:0.0
xdotool mousemove_relative --sync -- 1 1
xdotool mousemove_relative --sync -- -1 -1
}
LOG="$HOME/log/nfs-suspend-blocker.log"
ACTIVITYFILE1="$HOME/tmp/nfs-suspend-blocker.current"
ACTIVITYFILE2="$HOME/tmp/nfs-suspend-blocker.previous"
echo "Started run at $(date)" >> "$LOG"
if [ ! -f "$ACTIVITYFILE1" ]; then
check_activity > "$ACTIVITYFILE1"
exit 0;
fi
/bin/mv "$ACTIVITYFILE1" "$ACTIVITYFILE2"
check_activity > "$ACTIVITYFILE1"
if cmp --quiet "$ACTIVITYFILE1" "$ACTIVITYFILE2"; then
echo "No activity detected since last run" >> "$LOG"
else
echo "Activity detected since last run; inhibiting suspend" >> "$LOG"
inhibit_suspend
fi
সম্পাদনা 2: উপরের স্ক্রিপ্টটি কাজ করে তবে নীচে অন্য একটি মন্তব্যে ধন্যবাদ, আমি এখন এই জোড় স্ক্রিপ্ট ব্যবহার করছি, যা সাসপেন্ভ করতে বাধা দেওয়ার সময় স্ক্রিনসেভারটিকে কিক করার অনুমতি দেওয়ার সুবিধা রয়েছে। প্রথমটি হল /usr/lib/pm-utils/sleep.d/000nfs-inhibit, যা যদি কোনও বাধা ফাইল উপস্থিত থাকে তবে এটি স্থগিত প্রচেষ্টাটিকে আটকাবে:
#!/bin/sh
LOG="/home/zorn/log/nfs-suspend-blocker.log"
INHIBITFILE="/home/zorn/tmp/nfs-suspend-blocker.inhibit"
echo "$0: Started run at $(date), arguments: $*" >> "$LOG"
if [ "$1" = "suspend" ] && [ -f "$INHIBITFILE" ]; then
echo "$0: Inhibiting suspend" >> "$LOG"
exit 1
fi
exit 0
দ্বিতীয়টি পূর্ববর্তী এনএফএস-সাসপেন্ড-ব্লকার স্ক্রিপ্টের একটি পরিবর্তিত সংস্করণ এবং এখনও ক্রোন থেকে চালানো উচিত। এটি এখন নীচের মন্তব্যে বর্ণিত কৌশল অনুসরণ করে:
#!/bin/bash
# This works in tandem with /usr/lib/pm-utils/sleep.d/000nfs-inhibit, which
# will prevent a suspend occurring if $INHIBITFILE is present. Once it prevents
# a suspend, it appears that it requires some "user activity" to restart the
# timer which will cause a subsequent suspend attempt, so in addition to
# creating or removing $INHIBITFILE this script also jiggles the mouse after
# removing the file to restart the timer.
# If the output of this function changes between two successive runs of this
# script, we inhibit auto-suspend.
function check_activity()
{
/usr/sbin/nfsstat --server --list
}
# Slightly jiggle the mouse pointer about; we do a small step and reverse step
# to try to stop this being annoying to anyone using the PC.
function jiggle_mouse()
{
export DISPLAY=:0.0
xdotool mousemove_relative --sync -- 1 1
xdotool mousemove_relative --sync -- -1 -1
}
LOG="$HOME/log/nfs-suspend-blocker.log"
ACTIVITYFILE1="$HOME/tmp/nfs-suspend-blocker.current"
ACTIVITYFILE2="$HOME/tmp/nfs-suspend-blocker.previous"
INHIBITFILE="$HOME/tmp/nfs-suspend-blocker.inhibit"
echo "$0: Started run at $(date)" >> "$LOG"
if [ ! -f "$ACTIVITYFILE1" ]; then
check_activity > "$ACTIVITYFILE1"
exit 0;
fi
/bin/mv "$ACTIVITYFILE1" "$ACTIVITYFILE2"
check_activity > "$ACTIVITYFILE1"
if cmp --quiet "$ACTIVITYFILE1" "$ACTIVITYFILE2"; then
echo "$0: No activity detected since last run" >> "$LOG"
if [ -f "$INHIBITFILE" ]; then
echo "$0: Removing suspend inhibit file and jiggling mouse" >> "$LOG"
/bin/rm "$INHIBITFILE"
jiggle_mouse
fi
else
echo "$0: Activity detected since last run; inhibiting suspend" >> "$LOG"
touch "$INHIBITFILE"
fi