আমি আমার সার্ভারের জন্য একটি init.d স্ক্রিপ্ট তৈরি করার চেষ্টা করছি যা টিমস্পেক সার্ভার এবং কিছু node.js অ্যাপ্লিকেশন "pm2" ব্যবহার করে শুরু / বন্ধ করবে। এখানে আমার স্ক্রিপ্ট:
#! /bin/sh
### BEGIN INIT INFO
# Provides: my_service
# Required-Start: $local_fs $network
# Required-Stop: $local_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts/stops all my services
# Description: starts/stops all my services
### END INIT INFO
echo "running script with argument: $1" >> /log.txt
case "$1" in
start)
/usr/local/bin/pm2 resurrect >> /log.txt 2>&1
/home/teamspeak/ts3server_startscript.sh start >> /log.txt 2>&1
;;
stop)
/usr/local/bin/pm2 dump >> /log.txt 2>&1
/usr/local/bin/pm2 delete all >> /log.txt 2>&1
/home/teamspeak/ts3server_startscript.sh stop >> /log.txt 2>&1
;;
esac
echo "done" >> /log.txt
যেমন আপনি দেখতে পাচ্ছেন, স্ক্রিপ্টগুলি প্রতিটি কমান্ডের stdout এবং stderr /log.txt এ লগ করে।
আশ্চর্যের বিষয়টি হ'ল, আমি যখন /etc/init.d/my_service start/stop
ম্যানুয়ালি দৌড়ে যাই , এটি দুর্দান্ত কাজ করে। তবে আমি যখন একটি রিবুট ইস্যু করি তখন 3 pm2 কমান্ড ব্যর্থ হয়। মেশিনটির পুনরায় বুট করার পরে লগটি এখানে পেয়েছি:
running script with argument: stop
exec: 29: : Permission denied
exec: 29: : Permission denied
Stopping the TeamSpeak 3 serverdone
done
running script with argument: start
exec: 29: : Permission denied
Starting the TeamSpeak 3 server
TeamSpeak 3 server started, for details please view the log file
done
এটি কি হতে পারে আপনার কোনও ধারণা আছে? এটি কি pm2 এর সাথে সম্পর্কিত, বা এটি আমার স্ক্রিপ্টের কোনও বাগ?
আমি যা পাই না তা হ'ল আমি যখন শেলটি ব্যবহার করে ম্যানুয়ালি এটি শুরু করি তখন থেকে স্ক্রিপ্টটি পাওয়ার অফ / বুটে স্বয়ংক্রিয়ভাবে কার্যকর হয়ে যায় why
#! /bin/sh
বা আপনার আছে#!/bin/sh
? স্পেস স্ল্যাশ বিন স্ল্যাশ শ এর প্রথম চেহারা ...