假设我有一个KSH脚本my_script.ksh
,它执行复杂的操作,包括但不限于调用SQLPLUS来操纵Oracle数据库中的大量(百万)logging。 该脚本接受几个参数来确定它将处理的logging集,并假定操作每一组logging需要几个小时。
我现在正在使用NOHUP和命令选项在Unix服务器上运行脚本实例,也就是说,它正在后台运行,并从我用来调用脚本的telnet会话中分离出来。
假设我已经在桌面PC上本地修改脚本,以便更快地执行脚本的后续执行并添加一些审计机制,并且将要将脚本上载到服务器上。
我上传的脚本的修改版本会影响当前正在运行脚本的进程吗? 我不想杀死这个进程,而是从目前的logging集上重新开始,我害怕尝试错误,因为我不知道它会有多大的破坏性。 任何有经验的pipe理员/用户的build议?
如果您在阅读脚本文件时修改脚本文件,任何shell都会感到困惑。 如果shell在开始执行之前读取整个脚本文件,则有问题的时间窗口可能非常小。 我不知道ksh是否这样做。
如果你确定创build一个新的文件,而不是修改现有的文件,即ln myscript myscript.running; mv -f myscript.new myscript
ln myscript myscript.running; mv -f myscript.new myscript
(或任何其他方法将新脚本移动到位而不是修改现有文件),您不应该有任何问题。
它不会工作得很好。 如果在脚本运行时修改了脚本,很可能会出现语法错误。
我用bash和短跑来体验它。 我认为这与ksh不一样。 即使MS批次也会失败。
任何ksh脚本都会得到它自己的shell,所有函数首先被加载,然后解释脚本。 在运行时。 在执行过程中对磁盘进行的任何更改都不会反映到当前正在运行的作业中。