انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید

نویسنده موضوع: اجرای خودکار تی‌ماکس موقع روشن شدن در لینوکس سرور (حل شد)  (دفعات بازدید: 393 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین عرفان خیراللهی

  • Jr. Member
  • *
  • ارسال: 41
  • جنسیت : پسر
  • KDE - دبیان ناپایدار
    • یک نام دامنه
سلام دوستان!
من یک سرور اوبونتو دارم و از tmux برای اجرای برنامه‌ها روش استفاده می‌کنم. حالا می‌خوام این کار رو خودکار کنم.
یک اسکریپت برای این نوشتم که وقتی در یک ترمینال اجرایش می‌کنی، یک tmux در همون ترمینال اجرا می‌کنه به همراه کارهای دیگری که بهش گفته‌ام.
حالا می‌خوام اجرا کردن این اسکریپت رو اتوماتیک کنم که وقتی سرور روشن می‌شه خود به خود اون رو اجرا کنه!
من آدرس اسکریپت رو در crontab گذاشتم. اسکریپت یه ذره طولانی‌تره ولی اصلش چیزیه مثل این:
tmux new-session -t mysession
ولی موقع اجرا شدن این خطا رو دریافت می‌کنم:
open terminal failed: not a terminal

گویا برای اجرا شدن این لازمه که یک ترمینال از قبل باز باشه یا یه همچین چیزی!
می‌تونید من رو راهنمایی کنید که چطوری می‌تونم باز شدن یک tmux session رو خودکار کنم؟
« آخرین ویرایش: 29 آبان 1400، 04:44 ب‌ظ توسط ekm507 »
;D گامباره گامباره سننننن‌پای!

آفلاین مرتضی . م

  • High Hero Member
  • *
  • ارسال: 1121
سلام دوستان!
من یک سرور اوبونتو دارم و از tmux برای اجرای برنامه‌ها روش استفاده می‌کنم. حالا می‌خوام این کار رو خودکار کنم.
یک اسکریپت برای این نوشتم که وقتی در یک ترمینال اجرایش می‌کنی، یک tmux در همون ترمینال اجرا می‌کنه به همراه کارهای دیگری که بهش گفته‌ام.
حالا می‌خوام اجرا کردن این اسکریپت رو اتوماتیک کنم که وقتی سرور روشن می‌شه خود به خود اون رو اجرا کنه!
من آدرس اسکریپت رو در crontab گذاشتم. اسکریپت یه ذره طولانی‌تره ولی اصلش چیزیه مثل این:
tmux new-session -t mysession
ولی موقع اجرا شدن این خطا رو دریافت می‌کنم:
open terminal failed: not a terminal

گویا برای اجرا شدن این لازمه که یک ترمینال از قبل باز باشه یا یه همچین چیزی!
می‌تونید من رو راهنمایی کنید که چطوری می‌تونم باز شدن یک tmux session رو خودکار کنم؟
به انتهای فایل zshrc یا bashrc کلمه (دستور) tmux رو اضافه کن (نگران این نباش که هی tmux تو tmux بیاد چون خود tmux به طور پیشفرض به طور nested اجرا نمیشه

آفلاین esmaeelE

  • ناظر انجمن
  • *
  • ارسال: 1269
  • جنسیت : پسر
دستور اتصال به tmux در صورت موجود بودن یا ساخت یک خدمت دهنده جدید را به bashrc. بیفزایید.



آفلاین عرفان خیراللهی

  • Jr. Member
  • *
  • ارسال: 41
  • جنسیت : پسر
  • KDE - دبیان ناپایدار
    • یک نام دامنه
فکر کنم بد توضیح دادم (:
می‌خوام وقتی سیستم روشن می‌شه، بدون این که من بهش ssh بزنم، یک پنجره tmux باز بشه و بعدش برنامه‌های من توش شروع به کار کنه.

درواقع می‌خوام سیستم هر روز یک بار ری‌استارت بشه و بعدش پنجره tmux باز بشه و برنامه‌ها توش اجرا بشن. ولی نمی‌خوام دستی لاگین کنم به سیستم!

سپاس از دوستان
« آخرین ویرایش: 28 آبان 1400، 12:38 ب‌ظ توسط ekm507 »
;D گامباره گامباره سننننن‌پای!

آفلاین Dragon-

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 5124
  • جنسیت : پسر
حتما tmux باید باز بشه؟ دلیل اینکه می‌خواهید از tmux استفاده بشه این هست که دستورات/اسکریپت‌ها رو همزمان اجرا کنید؟
میدونید که زکات علم نشر آن است

آفلاین عرفان خیراللهی

  • Jr. Member
  • *
  • ارسال: 41
  • جنسیت : پسر
  • KDE - دبیان ناپایدار
    • یک نام دامنه
بله. من اسکریپت‌ها رو روی tmux اجرا می‌کنم و گاهی بهشون سر می‌زنم و بررسی‌شون می‌کنم.
اگر بدون اون باشه، نمی‌تونم به راحتی خروجی چند تا دستور در حال اجرا رو هم‌زمان ببینم. ولی tmux خیلی کار رو آسون‌تر می‌کنه.
مشکل فقط اینه که بعد از روشن شدن سرور، باید یه بار لاگین کنم و دستی یه اسکریپت رو اجرا کنم. در حالی که ترجیح می‌دم این به شکل خودکار انجام بشه. در زودترین زمان ممکن بعد از روشن‌شدن. ضمن این که الان ریبوت کردن سرور رو هم نتونسته‌ام خودکارش کنم به خاطر همین مساله و مجبورم خودم دستی این کار رو انجام بدم و بعدش صبر کنم تا کامل روشن بشه تا بتونم بهش ssh بزنم و tmux رو اجرا کنم.
همون‌طور که گفتم تنها کاری که لازمه انجام بشه اجرای یک خط دستوره. منتها اون خطایی که گفتم رو می‌گیرم.
;D گامباره گامباره سننننن‌پای!

آفلاین esmaeelE

  • ناظر انجمن
  • *
  • ارسال: 1269
  • جنسیت : پسر
یک راه ساده اینه که یک اسکریپت برای اجرای tmux بسازید.

برای نمونه tmux.sh

set -e

if [ $# -lt 2 ]
then
  echo "Usage: $0 [session_name] [command_1]..."
  exit 1
fi

session=$1
shift

tmux start-server
tmux new -d -s $session

on_error() {
  tmux kill-session -t $session
}
trap on_error ERR

cmd1=$1
shift
tmux send -t $session:0 "$cmd1" C-m

for i in "$@"
do
  tmux splitw -t $session -l 1
  tmux send -t $session:0.1 "$i" C-m
  tmux selectp -t $session:0.0
  tmux selectl -t $session tiled
done

tmux a -t $session


برای اجرای چند فرمان به این شکل فراخوانی کنید.
bash tmux.sh session_name "echo salam1" ls
آرگومان دوم و سوم فرمان هستند.



برای اجرا در زمان راه اندازی هم یک راه crontab است.

@reboot  /home/user/tmux.sh


آفلاین عرفان خیراللهی

  • Jr. Member
  • *
  • ارسال: 41
  • جنسیت : پسر
  • KDE - دبیان ناپایدار
    • یک نام دامنه
ممنونم :) درست شد!
در واقع این دو خط که گفتید رو در اسکریپت تغییر دادم و برطرف شد:
tmux start-server
tmux new -d -s $session

اون سوییج d- درستش کرد!
;D گامباره گامباره سننننن‌پای!