当前位置: 技术问答>linux和unix
[在线等]在红帽Linux桌面执行sh脚本的3个问题!
来源: 互联网 发布时间:2016-06-15
本文导语: 问题1:双击桌面上的sh脚本程序,弹出的窗口中,"在终端运行"和"运行"除了前者一闪而过,后者在后台执行这个脚本的表面上的区别外,还有什么本质上的区别? 问题2:要想在桌面上双击(选择"在终端运行"和"运行"皆可)执行一个脚本,...
问题1:双击桌面上的sh脚本程序,弹出的窗口中,"在终端运行"和"运行"除了前者一闪而过,后者在后台执行这个脚本的表面上的区别外,还有什么本质上的区别?
问题2:要想在桌面上双击(选择"在终端运行"和"运行"皆可)执行一个脚本,不能将路径用变量来代替,但对于路径特别长或者多处使用一个相同的一个长路径想用变量来代替,怎么办?
情况一,start.sh这样写:
[code=Shell Script]
#!/bin/sh
top="/opt/install/Tomcat6.0.18"
suffix=$(date +%y%m%d_%H%M%S)
nohup sh ${top}/bin/startup.sh >> ${top}/std_log/Server_Name.out@${suffix} &
[/code]
将它放在桌面上,双击(选择"在终端运行"和"运行"皆可)执行是失败的!会在指定的位置写文件Server_Name.out@20090529,但是长度为0,也没有java那个进程,也就是启动失败!
情况二,start.sh这样写:
[code=Shell Script]
#!/bin/sh
suffix=$(date +%y%m%d_%H%M%S)
nohup sh /opt/install/Tomcat6.0.18/bin/startup.sh >> /opt/install/Tomcat6.0.18/std_log/Server_Name.out@${suffix} &
[/code]
这样就可以了,由此可见双击(选择"在终端运行"和"运行"皆可)执行实际上就是打开一个新的Shell执行该脚本,路径这些变量都没法儿在新窗口生效,所以读取变量时失败,有时会创建一个长度为0的文件,有时候干脆什么也没有,期望高手指点一下。
问题3:我写了2个简单的脚本,aa.sh和bb.sh
aa.sh(/root/DeskTop)内容如下:
#!/bin/sh
nohup sh /opt/bb.sh >> ccc.txt &
bb.sh(/opt下)内容如下:
#!/bin/sh
tdy218="Tian Dongyun"
echo "${tdy218}"
产生的ccc.txt竟然不生成在桌面,而是/root目录下!这是怎么回事儿?
问题2:要想在桌面上双击(选择"在终端运行"和"运行"皆可)执行一个脚本,不能将路径用变量来代替,但对于路径特别长或者多处使用一个相同的一个长路径想用变量来代替,怎么办?
情况一,start.sh这样写:
[code=Shell Script]
#!/bin/sh
top="/opt/install/Tomcat6.0.18"
suffix=$(date +%y%m%d_%H%M%S)
nohup sh ${top}/bin/startup.sh >> ${top}/std_log/Server_Name.out@${suffix} &
[/code]
将它放在桌面上,双击(选择"在终端运行"和"运行"皆可)执行是失败的!会在指定的位置写文件Server_Name.out@20090529,但是长度为0,也没有java那个进程,也就是启动失败!
情况二,start.sh这样写:
[code=Shell Script]
#!/bin/sh
suffix=$(date +%y%m%d_%H%M%S)
nohup sh /opt/install/Tomcat6.0.18/bin/startup.sh >> /opt/install/Tomcat6.0.18/std_log/Server_Name.out@${suffix} &
[/code]
这样就可以了,由此可见双击(选择"在终端运行"和"运行"皆可)执行实际上就是打开一个新的Shell执行该脚本,路径这些变量都没法儿在新窗口生效,所以读取变量时失败,有时会创建一个长度为0的文件,有时候干脆什么也没有,期望高手指点一下。
问题3:我写了2个简单的脚本,aa.sh和bb.sh
aa.sh(/root/DeskTop)内容如下:
#!/bin/sh
nohup sh /opt/bb.sh >> ccc.txt &
bb.sh(/opt下)内容如下:
#!/bin/sh
tdy218="Tian Dongyun"
echo "${tdy218}"
产生的ccc.txt竟然不生成在桌面,而是/root目录下!这是怎么回事儿?
|
问题一:应该没有其他的区别,至少对脚本实现的功能是没任何的区别。
问题二:情况一中"nohup sh ${top}/bin/startup.sh"可能是因为找不到路径(top)的原因,没执行到startup.sh。
改为情况二中的绝对路径,或者$top试试看
问题三:>> ccc.txt & 中,没有指明生成文件存放的路径,当然是生成在当前用户的根目录下,root用户也就是/root了
问题二:情况一中"nohup sh ${top}/bin/startup.sh"可能是因为找不到路径(top)的原因,没执行到startup.sh。
改为情况二中的绝对路径,或者$top试试看
问题三:>> ccc.txt & 中,没有指明生成文件存放的路径,当然是生成在当前用户的根目录下,root用户也就是/root了
|