This is the mail archive of the cygwin@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Running Cygwin as a serivce and automatically executing a script


I want to run Cygwin as a service on Windows 2000 Professional with service
pack 2 and get Cygwin to automatically run a script (in this instance a Perl
script).
What you means is, you want to run *bash* as a service, not cygwin. Since when we say cygwin, we either mean the cygwin1.dll, or the whole cygwin platform.

> [...]
>
The batch files contains:

C:
chdir C:\cygwin\bin
bash --login -i
CD ~
CD mydir
perl myperl.pl
The batch file is plainly wrong. Even if "bash --login -i" would succeed (which does not, as you later describe), the batch would hang here since bash is waiting for input and not getting any. "CD ~" will not be executed at all since it's actually outside bash. This means even if "bash --login -i" would time out (it definitely *does not*), "CD ~" and the other two lines after it will be executed in Windows command interpreter environment as a Windows command and not in bash, where "CD ~" would fail since Windows does not know about "~".

When I run the batch file normally it gets as far as opening the bash, using
the currently logged in user (which happens to be administrator).
Exactly. bash opened and no further.

And if you want a "fake service" (like here) to run, test it first as normal programme (which you did, but without success). If the batch file fails "normally", how could it work as a service?

When run as a service (with or without the service set to run as
administrator) it loads the bash, but the bash reports it cannot find the
/tmp dir. And it stops execution.
Where did you get this "report" by bash if the batch runs as a service (non-interactive and non-visible)? How does the exact wording of this report look like?

In both instance the script is not loaded.
Well, more than one issue stands in its way.

[...]

The reason I wish to run it as a service is to hide the Cygwin window, as I
use the machine its on for many other things and having the bash window on
the taskbar is a pain, as its not actually doing anything, once the script
has been run.
Wrong. Either you want the script to run *once* when the system starts up (as you stated before), *before* the first user logs in. Or you want the script to run every time a user logs in. In first case you need to run it as a service, in second case run it in "Startup" folder or so. In a third case, if you want to run the script, say, daily, you may want to use Windows' "Scheduled Tasks".

If there is another way to load a script automatically and hide the Cygwin
window, I am all ears.
Besides the question of when to call the script, I think what you need first is to call bash correctly to start the script, something like:

bash -c perl myperl.pl

In any case, do not use "bash -i" which means "interactive" because you actually do not want to interact with bash here. In case you don't know, type "man bash" will give you a documentation about the bash shell.

Regards,

Huijing

--
Huijing Zhou <hj@N.O.S.P.A.M.cip.wiwi.uni-karlsruhe.de>
CIP Computer Lab, Faculty of Economics
University of Karlsruhe, Germany
http://www2.wiwi.uni-karlsruhe.de


--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Bug reporting: http://cygwin.com/bugs.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]