• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • bios
  • 系统安装
  • 系统进程
  • Windows
  • LINUX
  • RedHat/Centos
  • Ubuntu/Debian
  • Fedora
  • Solaris
  • 麒麟系统
  • 红旗Linux
  • 苹果MAC
  • 注册表
  • 其它系统
您的位置:首页 > 操作系统 >LINUX > Linux中rsh远程shell命令的使用技巧解析

Linux中rsh远程shell命令的使用技巧解析

作者:风行水上 字体:[增加 减小] 来源:互联网 时间:2017-05-12

风行水上 通过本文向大家介绍了linux rsh,shell rsh,rsh命令,rsh,rsh转运等相关知识,希望对您有所帮助,也希望大家多多支持linkedu.com

rsh有两种使用模式:

rsh $host : 远程登录,启动交互式进程。
rsh $host $command :远程执行命令,并显示输出。

rsh hosthostcommand

rsh $host $command的作用是:

1.在远程机器上执行命令$command
2.通过网络连接(socket)重定向当前进程和远端进程的标准输入和标准输出
3.远端rsh进程在远端进程结束后结束
4.本地rsh进程读取远端进程的标准输出直到结束(EOF)
深刻理解这个执行过程有助于理解各种“奇怪”的现象和用法。

通过-n选项制定不需要重定向标准输入(stdin)。


远端进程的执行

执行命令

在远端机器上查看相关进程:

远端进程的标准IO

检查远端进程的文件描述符:

1.stdin 和 stdout 共享一个socket连接
2.stderr 则通过一个pipe重定向(重定向到stdout ???)
3.rsh 的返回值

rsh程序自身的返回值表明的是rsh自身的运行状况,而不是远端进程的返回值。

获得远端进程的返回值

启动远端进程所用的Shell

由于用于启动远端进程的Shell类型是未知的,而有些操作的语法在不同Shell里是不同的。

比如输入输出重定向、命令返回值等。

解决该问题的方法之一是通过明确指定的Shell来启动真正需要的里程。比如:

通过rsh在远端执行后台进程

想在远端机器上执行后台进程。命令rsh $host "$command &"是不起作用的,会导致本地的rsh进程不能结束。

背后的原因应该是,$command的标准输入输出通常仍然绑定在rsh连接的socket上,从而导致本地的rsh进程无法读取到文件结束符EOF。

知道了原因就知道该怎么办了,关键是关闭后台进程续定在rsh连接上的标准输入输出。

这种情况下,rsh命令可以简单地写作:$ rsh -n $host "$command &"

远端后台进程的内容用Tcl表示,大意如下:

这时远端进程需要通过fork的方式结束自己,并启动真正的后台进程(守护进程)。

rsh进程的阻塞和超时处理

在程序中调用rsh $host $command时可能由于各种奇怪的原因发生rsh进程的阻塞,这不是我们希望看到的。

我们希望设置一个超时(timeout)机制来解决这个问题。

在Tcl程序中的一种实现可以这样: TODO


TCP Connection连接数过多引起的rsh失败
监控邮件显示rsh $host $command命令失败,错误提示为“poll: protocol failure in circuit setup"

怀疑是网络连接数过多所引起。

rsh $host $command 的网络连接过程

命令rsh $host连接远程主机的513端口。

命令rsh $host $command则连接远程主机的514端口,并随后发送一个本地端口号给远程主机,要求远程主机建立一个新的TCP连接到这个端口(还不清楚这个新的连接有什么作用)。然后才是传送命令和等待命令结束。

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Linux中rsh远程shell命令的使用技巧解析

相关文章

  • 2017-05-12Linux中ls命令的参数与返回结果完全解析
  • 2017-05-12Linux 下使用mount命令挂载CDROM的方法
  • 2017-05-12Linux下用于对比文件的diff命令使用教程
  • 2017-05-12在Linux系统下安装QQ的一般方法
  • 2017-05-12Linux为何如此深得人心呢?10项原因精选
  • 2017-05-12Linux系统下设置静态IP或自动获取动态IP的简单方法
  • 2017-05-12Linux中文本处理命令sed的使用示例分享
  • 2017-05-12Linux下压缩和优化jpg与png图片的方法
  • 2017-05-12简单讲解Linux的文件系统及相关的挂载命令
  • 2017-05-12Linux中df命令查询磁盘信息和fdisk命令分区的用法

文章分类

  • bios
  • 系统安装
  • 系统进程
  • Windows
  • LINUX
  • RedHat/Centos
  • Ubuntu/Debian
  • Fedora
  • Solaris
  • 麒麟系统
  • 红旗Linux
  • 苹果MAC
  • 注册表
  • 其它系统

最近更新的内容

    • Linux系统怎么调整swap分区大小?
    • 详解Linux系统中at与atq命令的用法
    • Linux中的文件与目录操作利器mv命令使用解析
    • Linux下增大可打开文件描述符的最大数的方法
    • spf13-vim – Vim编辑器终极发布
    • Linux下man帮助命令使用全解析
    • Linux下压缩和优化jpg与png图片的方法
    • Linux系统中用户的登入登出命令详解
    • Linux系统中网络数据存储工具命令TcpDump的使用教程
    • SELinux基本概念详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有