linux认证:利用非交付式方式运行交互式程序Linux认证考试

文章作者 100test 发表时间 2009:05:02 14:56:27
来源 100Test.Com百考试题网


  为了提高软件运行的灵活性,应用程序往往需要提供一些跟用户交流的窗口。其实在Unix操作系统中,许多命令本身就带有交互式程序的功能。如在删除一个文件夹时,如果这个文件夹中存有文件或者子文件夹,则系统就会提示用户是否需要删除这个文件或者子文件夹。这可以防止用户因为意外而删除有用的文件。不过有时候这也会造成一定的麻烦。如这个文件夹中可能有100个文件一家300个文件夹,此时如果每次删除一个文件就需要按以下y表示可以删除这个文件,那么就需要按400个y 。则这个交互式程序的设计显然会很麻烦。为此在某些特定的情况下,系统工程师可能希望利用非交互式的方式来运行一个交互式程序。
  一、在交互式程序中使用<.<.符号。
  查找命令可能是Unix系统中使用的最多的一个命令。如系统工程师可能需要在一个脚本程序中查找是否含有某个关键字等等。以前要实现这个任务,系统工程师不得不依次打开多个目标文件,然后输入需要查找的字符串进行查找。当目标文件数量比较少的时候,这个方法还可以。但是如果当目标文件比较多的时候,这个工作两就有点多了。
  查找命令为了提高用户的交互性,往往需要用户在查询数据的时候输入需要查找的字符串已经文件名字等参数。但是在实际工作中系统工程师可能会需要一个查找命名要执行多次,而每次其要查找的内容都是相同的(如上面笔者所描述的一个需求)。此时如果系统工程师在旁边等着命令执行结束然后再输入相关的参数,这显然是比较浪费时间的做法。遇到这种情况时,系统工程师需要把这个交互式的程序或者命令利用非交互式的方式运行。显然Unix系统开发者也考虑到了这个内容。故他们开发出了一个<.<.符号文件可以帮助实现类似的功能。
  lookforinfo.sh是笔者编写的在一个大文件中查找某个关键字的一个脚本程序。由于这个程序比较复杂笔者这里也就不列出来了。以后有机会笔者会像大家解释这个脚本程序。在这个程序运行的时候,需要连个参数,一是需要查找的字符串,二是需要查找的文件。不过笔者在运行这个程序的时候,则加入了<.<.符号,并且在后面加入了笔者需要查找的关键里以及需要查找的目标文件名。此时笔者运行这个程序的时候,就不需要输入这个两个参数了。笔者现在是每天利用cron命令让其执行一次,看看有没有在这个程序文件中出现start关键字。如果出现的话,则马上通过邮件方式告知笔者。这个run.sh是某个程序启动时的日志文件。当启动出现警告或者错误信息的时候,就会有一个error开头的记录。为此,通过这个每次一次的查询文件(时间设置在这个程序启动后10分钟),笔者在不查看这个日志文件的情况下,就可以知道其启动过程中是否有错误信息。要实现这个功能,<.<. 文件在这里起着至关重要的作用。
  那么这里的<.<.文件到底有什么作用呢?<.<.符号其实表示一个文件,系统工程师往往把它称之为here文件。Shell 会使用<.<.这个符号表示从脚本所在的同一个文件中读取数据。如上图所示,就表示从脚本的同一个文件中读取相关参数,而不是从其他文件(如键盘)中读取数据。通常情况下,任何使用标准数据的命令都可以从here文档中读取相关的参数数据。如上图所示,本来执行lookforinfo.sh程序,需要从键盘中接收查询字符串以及目标文件名两个参数。而此时笔者利用了<.<.文件,则系统看到了这个关键字之后,就不会再等待笔者键盘上的输入,而直接从here文件中去读取相关的运行参数。为此,当系统每次周期性的运行这个脚本程序时,系统就会自动获取相关的参数,而不用笔者重复的输入。可见,利用here这个文件符号可以让一些交互式的命令采用预先定义好的参数以非交互式的方式来执行。这个特性很有用。如上面笔者就是利用这个功能让系统定期的查询应用程序启动日志,看看是否有错误信息。让系统来帮助系统工程师自动监测应用程序的启动情况,从而降低系统工程师的工作量。
  另外可能各位系统工程师也喜欢在应用程序中使用read语句。不过read语句需要有一组事先确定好的参数来响应。此时如果系统工程师能够把这些参数预先防止在here文档中,则也可以让交互式命令read以非交互式的方式运行。通过这种处理技巧,可以减少系统等待用户输入的时间,提高程序的执行效率。因为电脑比人脑的反应速度要快的多。如果事先能够给交互式命令或者程序提供相关的参数,其可能执行起来只需要10秒即可。但是在执行的过程中再输入相关的参数的话,包括用户的反映时间、输入时间等等,则这个命令可能需要60秒才可以完成。为此系统工程师通过编写一些简单的脚本程序,可以让一些交互式的命令在非交互式环境中运行,从而提高应用程序的执行效率。
  二、实现应用程序无人值守安装。
  如在安装Oracle数据库系统的时候,需要用户输入相关的参数。如安装位置、实例名字等等。而且其安装之前也会进行一些运行环境的检测。不过有时候检测到的一些警告信息并不会影响其后续的使用。此时Oracle安装程序检测到这些警告信息之后,会等待用户的处理。但是笔者一次在Unix服务器上要实现无人值守安装。那时笔者就把安装过程中需要用到的一些参数预先设置在here文档中,然后让Oracle安装程序在安装的过程中,自动从这个 here文档中后去相关的安装参数,从而实现了无人值守安装。这个具体的实现方式,由于这里篇幅限制,不做展开说明。在手续的文章中,笔者会以安装 Oracle数据库系统为例,谈谈这个具体的实现过程。各位读者若有类似需要的话,可以关注笔者后续的文章。这里笔者只是像各位读者强调一下,利用 Here文档可以帮助系统工程师实现无人值守安装。
  三、利用变量来实现交互。
  Here文档中的内容需要经过shell解释和处理,然后再作为输入传递给一个命令。这能够给系统工程师以什么启示呢?笔者再以查询为例,谈谈这个具体的应用。如果现在某个关键应用程序往run.sh中写入相关的运行日志。系统工程师希望Unix系统会把这个日志中当天的日志记录信息查询出来,并发送给系统工程师。此时这个查询脚本该如何编写呢?如果让系统工程师每天查询一次,虽然也可以实现。但是系统工程师可能不能够每天坚持。而如果利用上面的查询语句的话,就又遇到了一个问题,即如果把系统当天的日期作为查询的字符串呢?这涉及到了变量的问题。
  通常情况下,标准输入是不支持变量信息的。也就是说,如果系统工程师手工执行这个命令的话,则需要收入输入当前的日期。但是现在这个here命令则是支持变量的。因为其在运行之前,shell会对其进行相关的解释和处理。如果是变量的话,则会根据一定的规则先取得变量所对应的值,然后再把它作为一个参数传递给相关的命令或者程序。此时,系统工程师就可以利用系统提供的相关命令获取系统的当前日期,然后shell就会把这个日期传递给查询脚本,查询出当日的日志信息并通过特定的方式传送给系统工程师。可见here文件的另一个价值就在于对于变量的支持。
  另外由于Here文件支持变量,所以其往往还跟邮件程序结合使用。如需要利用邮件来群发邮件,而系统工程师希望针对不同的收件人,其都有相应的称呼,而不是采用统一的称呼。此时就可以利用here文件的变量功能来实现。
  更多优质资料尽在百考试题论坛 百考试题在线题库 linux认证更多详细资料

相关文章


计算机中装有双系统的用户如何卸载LinuxLinux认证考试
Linux安全:IntelCPU缓存中毒威胁LinuxLinux认证考试
Linux爆本地提权漏洞请立即更新udev程序Linux认证考试
Linux资格认证:用Linux构建高效FTP服务器Linux认证考试
linux认证:利用非交付式方式运行交互式程序Linux认证考试
_dev_tty文件在Unix操作系统中的妙用Linux认证考试
linux认证:SAMBA连接过程中的常见错误解析Linux认证考试
linux认证:三种方法实现SAMBA服务随机启动Linux认证考试
linux认证:如何在Unix结果中抽取想要的参数Linux认证考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛