Mail Archives: cygwin/2002/07/10/21:04:23
> 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 AT N DOT O DOT S DOT P DOT A DOT M DOT cip DOT wiwi DOT uni-karlsruhe DOT 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/
- Raw text -