GAMMU-SMSD(1) Gammu GAMMU-SMSD(1)

gammu-smsd - دیمن پیامک برای گامو (Gammu)

gammu-smsd [OPTION]...

این صفحه راهنما به‌طور خلاصه دستور gammu-smsd را شرح می‌دهد.

دستور gammu-smsd برنامه‌ای است که به‌صورت دوره‌ای مودم GSM را برای پیام‌های دریافت‌شده پویش می‌کند، آن‌ها را در حافظه مشخص‌شده ذخیره می‌نماید و همچنین پیام‌های قرارگرفته در صف این حافظه را ارسال می‌کند.

این دیمن می‌تواند پس از دریافت سیگنال قطع ارتباط (SIGHUP) فایل پیکربندی را مجدداً بارگذاری کند و در پاسخ به SIGINT و SIGTERM به‌طور مناسب خاتمه یابد.

این برنامه گزینه‌های زیر را می‌پذیرد (توجه داشته باشید که گزینه‌های طولانی ممکن است در برخی پلتفرم‌ها پذیرفته نشوند):

نمایش راهنما.
نمایش اطلاعات نسخه و قابلیت‌های کامپایل‌شده.
فایل پیکربندی مورد استفاده؛ پیش‌فرض /etc/gammu-smsdrc است. در ویندوز هیچ پیش‌فرضی وجود ندارد و مسیر فایل پیکربندی باید همواره مشخص شود.

اگر SMSD را به‌عنوان یک دیمن سیستمی (یا سرویس) اجرا می‌کنید، توصیه می‌شود از مسیر مطلق برای فایل پیکربندی استفاده نمایید، زیرا دایرکتوری آغاز به کار ممکن است با آنچه انتظار دارید متفاوت باشد.

برای مستندات فایل پیکربندی، به SMSD Configuration File <#gammu-smsdrc> مراجعه کنید.

فایل قفل جهت ذخیره pid؛ خالی بودن به معنای عدم قفل‌گذاری است. در ویندوز پشتیبانی نمی‌شود.
کاهش مجوزهای دیمن به کاربر انتخاب‌شده پس از شروع به کار.
کاهش مجوزهای دیمن به گروه انتخاب‌شده پس از شروع به کار.
اجرای برنامه در قالب دیمن پس‌زمینه هنگام راه‌اندازی. در ویندوز پشتیبانی نمی‌شود.
نصب SMSD به‌عنوان یک سرویس ویندوز.
حذف نصب SMSD از سرویس‌های ویندوز.
شروع به کار سرویس ویندوز SMSD.
متوقف کردن سرویس ویندوز SMSD.
خاتمه برنامه پس از تعداد مشخصی از خرابی‌ها. از 0 برای عدم خاتمه استفاده کنید (پیش‌فرض).
بستن و پایان دادن خودکار برنامه پس از تعداد ثانیه‌های مشخص‌شده.
اجرای برنامه به‌عنوان سرویس ویندوز SMSD. این گزینه نباید به‌صورت دستی استفاده شود، بلکه تنها مدیر سرویس‌های ویندوز (Windows Service Manager) باید از این دستور استفاده کند.
تعیین نام سرویس ویندوز. هر سرویس نیازمند یک نام یکتا است؛ بنابراین اگر می‌خواهید چندین نمونه SMSD را اجرا کنید، باید برای هر سرویس نام متفاوتی برگزینید. پیش‌فرض "GammuSMSD" است.
استفاده از ثبت وقایع (لاگ‌گیری) طبق تنظیمات فایل پیکربندی (پیش‌فرض).
عدم استفاده از ثبت وقایع طبق تنظیمات فایل پیکربندی.
نصب توضیحات EventLog ویندوز در رجیستری.

افزوده شده در نسخه 1.31.90.

حذف نصب توضیحات EventLog ویندوز از رجیستری.

افزوده شده در نسخه 1.31.90.

دیمن SMSD را می‌توان با استفاده از سیگنال‌های POSIX زیر کنترل کرد (در صورتی که پلتفرم شما پشتیبانی کند):

بارگذاری مجدد پیکربندی و اتصال مجدد به تلفن.
خاتمه دادن تمیز و ایمن (Graceful shutdown) به دیمن.
استفاده داخلی برای gammu-smsd -X https://docs.python.org/3.9/using/cmdline.html#id5
تعلیق فعالیت SMSD و بستن اتصال به تلفن و پایگاه‌داده.
از سرگیری فعالیت SMSD (پس از تعلیق قبلی).

تغییر یافته در نسخه 1.22.91: پشتیبانی از SIGHUP اضافه شد.

تغییر یافته در نسخه 1.22.95: پشتیبانی از SIGALRM اضافه شد.

تغییر یافته در نسخه 1.31.90: پشتیبانی از SIGUSR1 و SIGUSR2 اضافه شد.

شروع به کار SMSD به‌عنوان یک دیمن در لینوکس:

gammu-smsd --config /etc/gammu-smsdrc --pid /var/run/gammu-smsd.pid --daemon

شروع به کار SMSD به‌عنوان یک دیمن در لینوکس با دسترسی‌های تقلیل‌یافته:

gammu-smsd --config /etc/gammu-smsdrc --pid /var/run/gammu-smsd.pid --daemon --user gammu --group gammu

برای استفاده از SMSD به‌عنوان یک دیمن، ممکن است بخواهید از اسکریپت init موجود در پوشه contrib/init همراه Gammu استفاده کنید. این اسکریپت به‌طور پیش‌فرض نصب نمی‌شود؛ یا آن را دستی نصب کنید یا فایل INSTALL را برای راهنما ببینید.

در ویندوز ۷ ممکن است لازم باشد قبل از نصب سرویس SMSD، قابلیت کنترل حساب کاربری (UAC) را غیرفعال کنید.

نصب سرویس ویندوز Gammu SMSD:

gammu-smsd.exe -c c:\Gammu\smsdrc -i

نصب دو نمونه از سرویس ویندوز SMSD:

gammu-smsd.exe -c c:\Gammu\smsdrc-1 -n Gammu-first-phone -i
gammu-smsd.exe -c c:\Gammu\smsdrc-2 -n Gammu-second-phone -i

حذف نصب سرویس ویندوز:

gammu-smsd.exe -u

اگر Gammu نتواند به‌عنوان یک سرویس ویندوز اجرا شود (معمولاً خطای "Error 1053: The service did not respond to the start or control request in a timely fashion" دریافت می‌شود)، ابتدا لاگ‌های SMSD را بررسی کنید. اگر راهنمایی مفیدی نداشتند، اجرای دستی SMSD را دقیقاً با همان پارامترهایی که سرویس را نصب کرده‌اید (بدون -i) آزمایش کنید.

برای مثال خط فرمان می‌تواند به این شکل باشد:

gammu-smsd.exe -c smsdrc

اکنون باید بتوانید خطاهای SMSD را مشاهده کنید، حتی اگر نتواند به‌عنوان سرویس شروع به کار کند.

از آنجا که نمی‌توانید Gammu و Gammu SMSD را همزمان روی یک دستگاه اجرا کنید، می‌توانید این محدودیت را با تعلیق موقت SMSD با استفاده از سیگنال‌های SIGUSR1 و SIGUSR2 برطرف کنید (بخش سیگنال‌ها را نیز ببینید):

SMSD_PID=`pidof gammu-smsd`
if [ -z "$SMSD_PID" ] ; then
    echo "Failed to figure out SMSD PID!"
else
    kill -SIGUSR1 $SMSD_PID
    gammu identify
    kill -SIGUSR2 $SMSD_PID
fi

یا حتی یک اسکریپت gammu-safe ایجاد کنید:

#!/bin/bash
SMSD_PID=`pidof gammu-smsd`
if [ -z "$SMSD_PID" ] ; then
  gammu $@
else
  tty=$(lsof |grep -E "gammu-sms\s+$SMSD_PID\s+.*/dev/tty*"|awk {'print $NF'})
  kill -SIGUSR1 $SMSD_PID
  while test "$(fuser $ttyfuser $tty 2> /dev/null|xargs)" = $SMSD_PID
  do
    sleep 1
  done
  sleep 1
  gammu $@
  kill -SIGUSR2 $SMSD_PID
  while test "$(fuser $ttyfuser $tty 2> /dev/null|xargs)" != $SMSD_PID
  do
    sleep 1
  done
  sleep 1
fi

نمی‌توانید از یک تلفن به‌طور همزمان توسط چند برنامه استفاده کنید. با این حال در صورتی که قفل‌گذاری را در بخش [gammu] <#section-[gammu]> فعال نکرده باشید، ممکن است ارتباط با تلفن از برنامه‌های دیگر آغاز شود. در این حالت احتمالاً هیچ‌یک از برنامه‌ها کار نخواهند کرد؛ بخش «فراخوانی Gammu و تعلیق SMSD» را برای راهکار جایگزین ببینید.

هیچ راهی برای تشخیص این‌که آیا یک پیامک پاسخی به پیامک دیگر است با نگاه کردن به هدرهای پیام وجود ندارد. تنها راه دستیابی به این کار، افزودن یک توکن به پیام و درخواست از کاربر برای گنجاندن آن هنگام پاسخ است.

Michal Čihař <michal@cihar.com>

2009-2015, Michal Čihař <michal@cihar.com>

February 9, 2026 1.43.2