关于Cygwin的x-Server的自动运行以及相关脚本修改

  常常需要用到远端服务器的图形工具,如果在windows端没用xserver的话,很多程序无法运行。一个特殊的例子,emacs在没用xserver的时候,是直接在终端中打开的,如果不修改cygwin.bat文件。

废话少说,下载安装cygwin的x11相关包。装完后,在C:\cygwin\usr\X11R6\bin下有个startxwin.bat文件,注释掉   %RUN% xterm -e /usr/bin/bash -l    这一行。以后每次点开此脚本文件,就不用弹出烦人的xterm了,而xserver会自动最小化在系统托盘。

但是每次都要手工点这个批处理脚本,很麻烦,于是想办法写入cygwin.bat中随着cygwin的终端一起运行。不过又有一个问题,在启动cygwin之后,如果关闭shell,那么xserver是还在运行的,下次在打开这个脚本,会弹出xserver已运行的错误。于是需要增加一个判断:如果xserver已运行,则不调用startxwin.dat脚本,否则调用。

但是问题又来了,加了此判断之后,如果xserver已启动,在关闭shell之后再重新打开shell,发现emacs又重新在shell内打开,而不是弹出窗口,bug?

于是修改对判断的处理:若xserver已运行,则杀掉该进程。这样,不管xserver在不在运行,运行cygwin.bat脚本时都会调用startxwin.dat脚本,emacs等程序也都没用问题了:)

修改之后的cygwin.bat脚本如下:

@echo off

set CYGWIN=binmode tty ntsec

C:

for /f %%i in (‘tasklist‘) do if /i %%i==XWin.exe (taskkill /IM XWin.exe /F)

call C:\cygwin\usr\X11R6\bin\startxwin.bat

chdir C:\cygwin\bin

bash --login -i

第二行是防止在shell中打开的无窗口的emacs无法退出。第四行是判断是否含有xserver的进程并处理,第五行是调用startxwin.dat脚本。

在经过这么一次折腾之后,发现就连dos的批处理都这么牛逼,可想linux的shell有多强大了,要好好学习shell编程!!!

时间: 2024-08-29 03:02:48

关于Cygwin的x-Server的自动运行以及相关脚本修改的相关文章

CentOS开机自动运行程序的脚本

有些时候我们需要在服务器里设置一个脚本,让他一开机就自己启动.方法如下: cd /etc/init.dvi youshell.sh   #将youshell.sh修改为你自己的脚本名编写自己的脚本后保存退出.在编写脚本的时候,请先加入以下注释 #add for chkconfig#chkconfig: 2345 70 30#description: the description of the shell   #关于脚本的简短描述#processname: servicename        

Linux、UNIX设置开机自动运行命令、脚本配置

转 http://blog.itpub.net/23135684/viewspace-668924/ unix 一般使用方法3,用于部署osw 方法一:编辑/etc/rc.d/rc.local加入要执行的命令.如:[[email protected] rc.d]# cat rc.local#!/bin/sh## This script. will be executed *after* all the other init scripts.# You can put your own initi

设置Qt程序在Windows开机后自动运行

(转自:http://blog.csdn.net/weiren2006/article/details/7443362) 让软件在系统启动时自动运行,可通过修改注册表实现. 在\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run中添加需启动的程序路径,代码如下: voidautoStart(boolflag){//写入注册表,开机自启动HKEYhKey;//找到系统的启动项LPCTSTRlpRun=(wchar_t*)

Windows Server 2008 任务计划无法自动运行的解决办法

问题:编写的bat脚本,直接执行,成功:但是在任务管理器中配置该任务,运行不成功,结果显示为:0x1,系统环境为 Windows Server 2008. 分析:bat任务没有调用执行. 解决方案: 尝试换用户创建任务也不行,最后网上的一篇文章提供了线索. 在任务启动的“操作”窗口,除了原本的启动程序路径,添加属性“起始于”(将bat文件的上层目录填入) 附:http://www.cnblogs.com/mannyzhoug/archive/2013/05/28/3104030.html Win

linux 自动运行脚本参数介绍

Debian的定时执行命令Crontab 2012-12-3 5:50 分类:NAS 2743 views 1 条评论 标签:Linux Debian Debian的定时执行命令Crontab,这个相当于Windows的计划任务 想要让Debian定时执行命令就得靠crontab了! 它的功能类似微软的计划任务,可以在您设定的时间执行你想要的命令. 通过编写设定文件可以组合出复杂的执行时段,让命令的执行更加有效率. cron设置文件在Debian系统下的位置 /etc/crontab 大致内容如

openSUSE下开机自动运行脚本命令的方法

在/etc/init.d/boot.local文件中添加命令.RedHat系统的对应文件是/etc/rc.d/rc.local. 对于Linux系统启动时自动运行的命令或程序,在rh-basedlinux系统,一般常见是放在/etc/rc.d/rc.local中.但SuSELinux没有这个文件,另外也不推荐使用者这样管理启动服务.推荐使用正规的方式来管理服务启动方式. 有人会说,在SuSE系统里,可以放在/etc/init.d/boot.local中,这要看实际情况.因为SuSE的/etc/i

[经验分享] windows2008服务器设置系统启动时程序自动运行

转自:http://bbs.qcloud.com/thread-4082-1-1.html 设置windows服务器启动时自动运行程序,而且不需要用户登录,就可以启动 首先准备好,程序的启动脚本文件或运行文件,如:start.bat 方法1: 通过系统计划任务实现<ignore_js_op> <ignore_js_op> <ignore_js_op> <ignore_js_op> <ignore_js_op> "浏览"找到 程

mssql server 2005自动备份数据库

(转) (1)启动[sql server Management Studio],在[对象资源管理器]窗口里选择[管理]——[维护计划]选项. 2)右击[维护计划],在弹出的快捷菜单里选择[维护计划向导]选项 ,弹出如图所示的[维护计划向导]对话框,单击[下一步]按钮 3)弹出如图所示[选择目标服务器]对话框,在[名称]文本框里可以输入维护计划的名称:在[说明]文本框里可以输入维护计划的说明文字:[在服务器]文本框里可以输入要使用的服务器名:最后选择正确的身份证信息,单击[下一步]按钮. (4)弹

[VC]VC实现开机自动运行程序

有时候,我们需要在计算机启动的时候就启动某些程序,不要人干预.这里,提供一种让程序开机自动运行的方法.见下面代码: BOOL CXXX::SetAutoRun(CString strPath) { CString str; HKEY hRegKey; BOOL bResult; str=_T("Software\\Microsoft\\Windows\\CurrentVersion\\Run"); if(RegOpenKey(HKEY_LOCAL_MACHINE, str, &