কেবল TMOUT ভেরিয়েবলটি পড়ুন - কোনও ক্রিয়াকলাপ না থাকলে শেল স্বয়ংক্রিয়ভাবে প্রস্থান করতে অক্ষম করতে ওয়ার্কআরাউন্ড


10

আমাদের এখানে কেবল পঠনযোগ্য ব্যাশ ভেরিয়েবল রয়েছে। আমাকে সেই পরিবর্তনশীল আনসেট করার অনুমতি নেই।

$ echo $TMOUT
1800

কার্যতাকার হিসাবে আমি সেই লাইনগুলি লিখেছি (যে আমার সেশনটি প্রস্থান করবে না)

#!/usr/bin/perl

$|++;
while (1) { print "\e[0n"; sleep 120; }

কোনও অফিসিয়াল প্যাকেজ (আরপিএম) রয়েছে যা সেন্টোস 7 / আরএইচইএল 7 সংগ্রহস্থলে অনুরূপ (পার্ল কোডের উপরে) এর মতো করে? আমি কোনও ভিআইএম সম্পাদক খুলতে পছন্দ করি না, আমি একটি আদেশ চাই wish


4
catআপনার সেশন থেকে দূরে পদক্ষেপ নেওয়ার সময় এটির সাধারণ সমাধানটি কেবল চালানো হয় । এবং তারপরে এটি আপনার ফিরে আসার সময় ^ সে।
স্টিভ

আমি একই ধরণের নিয়ম আরোপ করেছি কারণ আমার দলে এমন লোক ছিল যা টানা কয়েক সপ্তাহ টার্মিনাল খোলা রেখেছিল। আমি 1800 একরকম নিম্নমানের হিসাবে সম্মত হই না কেন, এটি কোনও কারণে সেখানে উপস্থিত থাকতে হবে। লোকেরা স্বাভাবিকের মতো বিচ্যুতি লক্ষ্য রাখে ... আপনার সেশনগুলি ঘায়ে থাম্বের মতো দাঁড়িয়ে থাকবে।
রুই এফ রিবেইরো

যখন এটি কেবল পঠনযোগ্য, টাইপ করুন:exec env TMOUT=0 bash
নাইটশিফট

উত্তর:


5

আপনি কমান্ড লাইন থেকে পার্ল কমান্ড জারি করতে পারেন ...

perl -e '$|++; while (1) { print "\e[0n"; sleep 120; }'

অথবা আপনি শেল এ একই কাজ করতে পারেন (একটি sh/ bashউদাহরণ):

while sleep 120; do printf '\33[0n'; done

অথবা আপনি ব্যবহার করতে পারেন watch:

watch -n 120 printf '\33[0n'


কি printf '\33[0n'? আমি জানি কমান্ড লাইনটি printfকী। তবে কী ছাপা হচ্ছে?
ট্রেভর বয়ড স্মিথ

1
\33এস্কেপ কীটির <esc>[0nজন্য সংক্ষিপ্তরূপে পরিচিত একটি এএনএসআই এস্কেপ কোড নয়, আমি কল্পনা করি এটি টাইপ ছিল এবং এমনটি হওয়া উচিত <esc>[0mযা অ্যাপস / টার্মিনাল / টিটি'র জন্য টার্মিনাল রঙটি পুনরায় সেট করে যা এএনএসআই এস্কেপ কোডগুলি সমর্থন করে।
ড্র করুন স্লোয়ান

12

আপনার .bash_profile এর শুরুতে এটি যুক্ত করবেন?

if [ ! -z "$TMOUT" ]; then
  env -i bash --init-file ~/.bash_profile
fi

সিসাদমিনদের ক্রোধ থেকে সাবধান থাকুন যদি আপনি তাদের সময়সীমা রুলসকে পরাস্ত করার ফলস্বরূপ কোনও গাজিলিয়ন পুরাতন অধিবেশনগুলি চালিয়ে যান।


এটি সত্যই ILভিল!
আহি টুনা

1
-I যুক্তি পরিবেশ মুছে দেয়। আপনি আরও সুনির্দিষ্ট হতে পারেন এবং কেবলমাত্র এর মতো একক ভেরিয়েবল আনসেট করতে পারেন: env -u TMOUT bash --init-file ~ / .Bash_profile
ডেভ রিচার্ডসন

4

এই জিনিসটি হ'ল,
যখন সেশন ভেরিয়েবলটি "কেবল পঠনযোগ্য" হয় আপনার বর্তমান শেল প্রক্রিয়াটি "এক্সিকিউটিভ" দ্বারা কমান্ডের সাথে প্রতিস্থাপন করতে হয়
, সুতরাং আপনার প্রশ্নের উত্তরটি হ'ল:

$> exec env TMOUT=0 bash

তবে আমি উচ্চতর টাইমআউট মান নির্ধারণ করার পরামর্শ দিচ্ছি

$> exec env TMOUT=3600 bash


0

আমি আমার ক্ষেত্রে এটি /etc/profile.d/bash_autologout.sh এ সংজ্ঞায়িত করেছি:

TMOUT=1800
readonly TMOUT
export TMOUT

এটি খুঁজে পেতে, আমি করেছি:

sudo find /etc/ -name "*" | xargs sudo grep "TMOUT" 2>&1 | grep -v "filter..."
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.