侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux uux命令教程:如何在不同Unix系统之间执行命令和传输文件

Linux uux命令介绍

uux是Unix-to-Unix Copy(UUCP)套件中的一个程序,它可以在不同的Unix系统之间执行命令和传输文件、电子邮件和网络新闻。uux命令可以让用户在本地系统上继续工作,而在远程系统上运行指定的命令。在运行请求的命令之前,uux命令会从指定的系统收集任何必要的文件。用户可以将命令的输出重定向到指定系统上的特定文件。出于安全原因,许多安装只允许uux命令运行rmail命令¹。

适用的Linux版本

uux命令适用于大多数Linux发行版,如Ubuntu、Debian、Fedora、CentOS等。如果某些Linux系统没有安装UUCP套件,可以使用以下命令进行安装:

  • 对于使用apt-get工具的系统(如Ubuntu、Debian),可以使用以下命令:
sudo apt-get install uucp
  • 对于使用yum工具的系统(如Fedora、CentOS 7),可以使用以下命令:
sudo yum install uucp
  • 对于使用dnf工具的系统(如CentOS 8),可以使用以下命令:
sudo dnf install uucp

Linux uux命令的基本用法

uux命令的语法格式如下:

uux [options] command

其中,options是一些可选的参数,command是要执行的命令字符串,可以包含一个或多个参数,也可以包含重定向符号和文件名。

Linux uux命令的常用选项说明

uux命令支持以下常用选项:

选项说明
-c, --nocopy不复制本地文件到spool目录,这是默认选项。如果文件在uucico守护进程处理之前被删除,复制操作会失败
-C, --copy复制本地文件到spool目录
-n, --notify如果远程系统没有执行请求的命令,通知用户。这个响应是通过远程系统的邮件发送的
-z, --nouucico不启动uucico守护进程
-, -p, --stdin读取标准输入,并将其作为要执行命令的标准输入
-a name, --return-address name指定返回地址为name,而不是当前用户
-b, --return-signal如果请求的命令失败,返回一个信号给用户
-g grade, --grade grade指定传输文件时使用的优先级等级,grade可以是一个字母或数字,字母a最高,z最低
-j, --jobid打印请求的作业ID,并退出
-r, --nouucico不启动uucico守护进程
-s file, --status-file file将请求状态写入指定文件
-x debug_level, --debug debug_level打开调试模式,并设置调试级别

Linux uux命令的实例

在本地系统上执行ls命令,并将输出重定向到远程系统上的文件

[linux@bashcommandnotfound.cn ~]$ uux "ls >!remote!~/ls.txt"

这个命令会在本地系统上执行ls命令,并将输出重定向到远程系统remote上用户主目录下的ls.txt文件。

在远程系统上执行cat命令,并将输出重定向到本地系统上的文件

[linux@bashcommandnotfound.cn ~]$ uux "remote!cat remote!~/foo.txt >!~/foo.txt"

这个命令会在远程系统remote上执行cat命令,并将输出重定向到本地系统上用户主目录下的foo.txt文件。

在远程系统上执行diff命令,比较两个来自不同系统的文件,并将输出重定向到本地系统上的文件

[linux@bashcommandnotfound.cn ~]$ uux "remote!diff sys1!~user1/foo.txt sys2!~user2/bar.txt >!~/diff.txt"

这个命令会在远程系统remote上执行diff命令,比较来自sys1和sys2两个系统上的文件,并将输出重定向到本地系统上用户主目录下的diff.txt文件。

在远程系统上执行rmail命令,发送一封邮件给指定的收件人

[linux@bashcommandnotfound.cn ~]$ uux "remote!rmail user@example.com" < message.txt

这个命令会在远程系统remote上执行rmail命令,发送一封邮件给user@example.com,邮件的内容来自本地系统上的message.txt文件。

在远程系统上执行uucp命令,复制一个文件到另一个远程系统

[linux@bashcommandnotfound.cn ~]$ uux "remote!uucp remote!~/foo.txt sys3!~/bar.txt"

这个命令会在远程系统remote上执行uucp命令,复制remote上用户主目录下的foo.txt文件到另一个远程系统sys3上用户主目录下的bar.txt文件。

Linux uux命令的注意事项

  • uux命令不会立即执行请求的命令,而是将请求排队,直到uucico守护进程调用该系统并执行它。如果想要立即启动uucico守护进程,可以使用-u选项。
  • uux命令会在指定的系统上创建一个X.*文件,用于执行请求的命令。该文件的完整路径名是/var/spool/uucp/System/X.SystemNxxxx的形式,其中System是指定的系统名,N是一个数字,xxxx是一个随机字符串。
  • uux命令会在本地系统上创建C.*和D.*文件,用于传输到其他系统。C.*文件包含与uucp命令相同的信息,D.*文件包含远程命令执行所需的数据,或者在远程系统上变成X.*文件用于远程命令执行。
  • 如果要使用标准输入或输出重定向符号,必须用引号将它们引起来,以便它们被传递给uux命令而不是被shell解释。附加重定向(>>)不起作用。
  • 所有指定的文件都会被收集到一个单独的目录中,在执行请求的命令之前。这意味着每个文件必须有一个不同的基本名。例如,uux "sys1!diff sys2!~user1/foo sys3!~user2/foo >!foo.diff"会失败,因为两个文件都会被复制到sys1并存储为foo。
  • 可以用括号引用参数来避免对感叹号的解释。这在在远程系统上执行uucp命令时很有用。
  • 请求执行一个空命令(例如uux sys!)会为指定的系统创建一个轮询文件。
  • uux命令的退出状态是sysexits.h头文件中定义的代码之一。特别地,EX_OK(0)表示成功,EX_TEMPFAIL(75)表示临时失败。
0

评论区