I want to create a service, which receives input from a shell script and returns outputs.
where should I start, and what to do ? Please give me step by step instruction or reference to one.
Super User is a question and answer site for computer enthusiasts and power users. It only takes a minute to sign up.Sign up to join this community
I'm not sure what you mean by "a service". Do you mean something that can be invoked and run in the background? If so, your needs might be satisfied by a Bash script that polls a file for input, takes input when it is found in the file (presumably it would be piped in by the shell script that generates the input), and then outputs via whatever mechanism you choose. You could wrap the polling in an infinite loop with a
sleep statement, and background the script to run continuously via nohup (manpage). That said, I'm not sure that's robust enough for your purposes, mostly because I'm not truly sure what you're asking. So let's take a few steps back:
There are many ways to write daemons/services in Unix, and your question should be a little more specific if you want step-by-step instructions. Some good places to start might be: what language do you want to write this in? What kinds of inputs will this service be taking? What will it be outputting, in what form, and to where/for whom/what recipient? At a higher level: do you really need a service for this, or is what you're after some sort of persistently-caching data processor, which could run as a standalone executable? The latter is often the better choice, especially when starting from scratch, as you can outsource a lot of rapid-sequential/simultaneous invocation problems to the back-end persistence provider (in my imagining, something like sqlite).
If you'd like to write it in Bash (which might not be the best option), I'd suggest starting here. Be sure you fully understand the basics of UNIX process forking and monitoring, otherwise writing daemons that perform arbitrary functions can be a significantly-sized "foot gun".
Bash, as I said before, isn't necessarily the best choice here. Perl contains a pretty robust built-in facility for doing this, in the form of Proc::Daemon. This SO question should get you pointed in the right direction if you choose Perl.
Python, also, has this ability. The canonical example of a Python daemon, complete with the double-fork magic, and a brief explanation, can be found here.
C/C++ is also a common language for daemon-writing, and there are plenty of guides. I like this one, but my experience in that area is more limited than the other languages above.
All of the above aside, this question probably belongs on Stackoverflow.