Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Message-ID: <3D2CD988.5040807@N.O.S.P.A.M.cip.wiwi.uni-karlsruhe.de> Date: Thu, 11 Jul 2002 03:04:08 +0200 From: Huijing Zhou Organization: University of Karlsruhe User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.0rc3) Gecko/20020523 X-Accept-Language: en MIME-Version: 1.0 To: Dave Cc: cygwin AT cygwin DOT com Subject: Re: Running Cygwin as a serivce and automatically executing a script References: Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit > 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 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/