Ubuntu系统任务调度与远程访问全攻略
1. Ubuntu任务调度
在Ubuntu系统中,为了保证系统的顺畅运行,我们常常需要定期执行一些任务,比如日常备份/home文件夹,或是清理/tmp文件夹以确保磁盘有足够的可用空间。要是手动执行这些任务,很容易出现遗忘或者重复操作的情况。好在Linux系统具备自动化执行特定任务的能力,这些任务既可以按照设定的时间定期执行,也可以作为一次性任务来运行。
1.1 使用crontab调度任务
在Ubuntu系统里,调度任务的主要方式是通过cron守护进程。它能代表用户调度单个任务,同时系统也会利用它来运行一些关键的系统任务。
cron要运行用户调度的任务,就会读取一个名为crontab的文件。每个用户都有自己的crontab文件,该文件存放在/var/spool/cron/crontabs目录下。虽然可以用文本编辑器来编辑这个文件,但最好使用专门的命令。
系统级别的任务由/etc/crontab/文件来处理,它会根据任务设定的执行时间(每小时、每天、每周或每月),运行/etc/cron.hourly、/etc/cron.daily等目录下的脚本。一般用户通常无需操心系统级别的cron作业,这些作业由系统内部处理,程序会根据需要自行创建相应的条目。
cron守护进程在系统启动时就会启动,在用户使用系统的过程中,它会在后台每分钟检查一次是否有任务到期。一旦有任务到期,它就会开始执行该任务,执行完毕后又回到等待状态。
创建一个调度任务相对简单,可以通过shell来完成。输入以下命令,就会将你的个人crontab文件加载到GNU nano文本编辑器中,以便进行编辑:
crontab -e要是你是第一次编辑crontab文件,它很可能是空的(实际上,你可能会看到一条消息提示需要从头创建该文件)。不过别担心,添加新条目并不难,通常格式如下:
01 12 15 * * tar -cjf /home/keir/mybackup.tar.bz2 /home/keir下面来逐段分析这一行:
- 前半部分的数字和星号表示任务的执行时间。从左到右,各个字段的含义如下:
- 分钟:取值范围是0到59。
- 小时:采用24小时制,取值范围是0到23。
- 日期:表示一个月中的第几天,取值范围是1到31(假设该月有这么多天)。
- 月份:取值范围是1到12。
- 星期:可以用0到6表示(0代表星期日),也可以用三个字母的缩写(如mon、tue、wed等)。
在这个例子中,任务被设定为在每月15号的中午12点零1分执行。那么星号代表什么呢?它们实际上是通配符,告诉cron可以取所有可能的值。因为月份字段是星号,所以这个任务每个月都会执行;因为星期字段是星号,所以这个任务每天都会执行。
你可能会注意到这里存在一个逻辑矛盾:如果同时指定了日期和星期,会不会严重限制任务执行的机会呢?确实会。例如,如果你指定为sat,并且在日期字段中填入15,那么只有当该月15号恰好是星期六时,任务才会执行。这就是为什么在同一个crontab条目中,这两个字段很少同时使用,如果使用了其中一个,另一个通常会用星号表示。
时间和日期字段之后就是具体的命令:tar。在之前的学习中我们知道,tar是用来备份个人数据的。
在命令部分,只能使用标准的BASH shell命令。cron无法将波浪号(~)这样的符号解释为指代你的主目录。因此,在定义cron作业时,最好使用绝对路径。
再看另一个例子:
59 23 * * 0-3 tar -cjf /home/keir/mybackup.tar.bz2 /home/keir第一个字段表示这个任务会在23点59分(即午夜前一分钟)执行。日期和月份字段都是星号,这意味着任务每天、每月都会执行。不过,星期字段是0 - 3,这表示任务只会在星期日到星期三执行。
你可以根据需要添加任意数量的cron条目,每个条目占一行,不需要按照日期或时间顺序排列,你可以根据自己的需求随时添加。完成编辑后,按照常规方式(按下Ctrl + X)保存文件并退出GNU nano。
除了手动编辑crontab文件,还可以使用gcrontab程序通过图形界面来编辑。不过该程序不是默认安装的,你可以在Ubuntu软件仓库中找到它,并使用Synaptic包管理器进行安装。使用该程序与手动编辑crontab类似,先点击“Add New”按钮添加一个调度作业,然后使用第二个工具栏上的各种图标来修改时间、日期、月份等,最后点击闪电图标添加实际的命令。不过说实话,与手动编辑crontab文件相比,使用gcrontab似乎没有明显的优势,但如果你真的讨厌使用命令行,不妨试试看。
1.2 使用anacron调度任务
cron有一个不足之处,就是它要求计算机始终处于运行状态。如果你像之前的例子那样,将任务调度在午夜左右执行,但此时计算机没有开机,那么这个任务就不会执行。
anacron就是为了解决这个问题而创建的。它也可以运行调度任务,但与cron不同的是,它不依赖于精确的时间和日期,而是基于时间段的原则。例如,任务可以设置为每天执行,实际上,任务可以设置为每x天执行一次,不管是每两天还是每十万天。而且,即使在这个时间段内计算机关机并重新启动,任务也只会在指定的时间段内执行一次。此外,任务还可以专门设置为在每个月的月初执行,而不考虑每个月的天数。
anacron主要用于系统维护,任务的详细信息存储在anacrontab文件中。与crontab不同的是,每个用户并没有自己的anacrontab文件。不过,你也可以将自己的命令添加到主anacrontab文件中。这个文件可以用任何文本编辑器进行编辑,不需要使用专门的命令(不像crontab),但需要使用超级用户权限。
anacrontab文件中每行的格式如下:
days delay name of task commanddays字段表示任务执行的间隔天数。如果要设置任务每天执行,就输入1;如果要让任务每9天执行一次,就输入9;如果要设置为每月执行,就输入@monthly。delay字段告诉anacron在运行任务之前需要等待的时间,单位是分钟。这是必要的,因为anacron通常在系统启动时运行,如果它立即运行调度的任务,可能会导致系统因过于繁忙而卡顿。一般来说,延迟5分钟就足够了,但如果在该任务之前已经有其他任务安排在同一天执行,你需要留出足够的时间让它们完成。name of task字段是供你个人参考用的,不能包含斜杠或空格(建议用下划线或句号来分隔单词)。command字段和crontab中的一样,是需要执行的shell命令。
需要注意的是,anacron是以root用户身份运行的,所以如果你在anacrontab文件中添加了自己的条目,它创建的任何文件也将归root用户所有。例如,如果你使用anacron来备份/home目录,生成的备份文件将归root用户所有,你需要使用chown命令来更改其所有权,以便你能够访问它。
下面是一个anacrontab条目的例子:
1 15 backup_job tar -cjf /home/keir/mybackup.tar.bz2 /home/keir这将每天运行指定的tar命令,并且在anacron首次运行后延迟15分钟执行。
anacron会在每次系统启动时自动运行,你也可以在命令提示符下手动运行它(需要超级用户权限):
sudo anacron1.3 使用at调度一次性任务
如果你想快速调度一个一次性任务,可以使用at命令。
使用at添加作业非常简单,因为at命令支持多种时间格式。例如,在命令提示符下输入以下命令,将在明天午餐时间运行一个作业:
at noon tomorrow就这么简单!
你也可以指定具体的时间、日期甚至年份:
at 13:00 jun 25 2008这将在2008年6月25日下午1点运行作业。at命令的各种时间和日期格式可以在其手册页中查看。
输入包含日期的at命令后,会出现一个模拟的shell提示符。在这里,你可以输入想要运行的命令。可以依次输入多个shell命令,每个命令之间按回车键分隔。输入完毕后,按下Ctrl + D表示编辑完成。此时,at会确认时间并将任务写入其任务列表。
你可以随时输入atq来查看任务列表,它会显示一个编号的作业列表。要删除任何作业,只需输入atrm,后面跟上该作业在atq列表中的编号。例如,以下命令将删除atq列表中编号为9的作业:
atrm 92. 远程访问计算机
Linux在网络支持方面表现出色,包括对互联网的支持。借助一些实用的系统工具,你可以通过各种网络(包括互联网)访问Linux计算机,甚至可以像坐在远程计算机前一样操作它。
2.1 使用安全外壳(Secure Shell,SSH)
在Unix的发展历程中,计算机之间的连接一直是一个重要的部分,无论是哑终端连接到大型机,还是Unix机器作为新兴互联网的节点。为了实现计算机之间的通信和登录,人们发明了各种各样的技术和协议。然而,在现代互联网环境下,数据隐私面临着新的威胁。理论上,任何通过互联网传输的数据都有可能在传输过程中的某些关键节点被他人获取。如果数据没有得到任何保护,就很容易被拦截和读取。
为了应对这种情况,人们开发了SSH程序套件。虽然这些程序最初是开源的,但后来逐渐变成了专有软件。因此,又出现了一些新的开源版本,其中包括大多数Linux发行版(包括Ubuntu)使用的OpenSSH。
SSH的目标是在两台计算机之间建立安全的连接。建立连接后,你可以执行几乎任何任务,比如启动一个shell会话,就像你坐在远程计算机前一样使用它,或者在两台计算机之间复制文件。SSH在连接的两端使用各种技术,不仅对两台计算机之间传输的数据进行加密,还对用户名和密码进行加密。
登录到远程计算机
最基本的SSH连接方式是远程登录。通过这种方式,你可以在远程计算机上获得一个命令提示符,就像你刚刚坐在它前面并打开了GNOME终端一样。
不过,在通过SSH登录到任何计算机之前,你需要确保远程计算机能够接受SSH连接。这意味着它需要运行SSH服务器程序(也称为服务),并且其防火墙需要为传入连接开放端口。
OpenSSH有两个主要组件:客户端和服务器。大多数发行版都会安装这两个组件,并始终运行服务器组件。但在Ubuntu系统中,只安装了SSH客户端组件。要安装服务器组件,从而实现远程访问Ubuntu系统,你需要打开Synaptic包管理器(系统 -> 管理),搜索openssh-server,然后点击安装。安装完成后,配置会自动完成。不过,如果你使用的是Ubuntu防火墙,你需要配置一个传入规则来开放端口22。
要启动与远程计算机的SSH远程shell会话,通常在本地计算机的命令提示符下输入类似以下的命令:
ssh <username>@<IP address>也就是说,你需要指定要登录的用户名以及远程计算机的IP地址。如果要访问的系统有完全限定域名(FQDN),你也可以指定该域名,而不是IP地址。
输入命令后,系统会提示你输入密码,这个密码是你要登录的远程计算机上账户的密码。
当你第一次登录时,会看到以下消息:
The authenticity of the host <host IP address> can't be established这意味着远程计算机的加密密钥还没有添加到你的PC的存储文件中。不过,一旦你同意首次登录,加密密钥就会被添加,以后再连接该远程计算机时,就会使用该密钥来确认其真实性。
确认要建立连接后,你需要输入用于启动SSH连接的用户账户的密码。输入正确密码后,你就会在远程计算机上获得一个shell登录。你可以像在本地计算机上一样运行相同的命令并执行相同的任务。
你登录的远程计算机不会显示出被远程使用的迹象,这不像电影里那样,你在本地计算机上输入的内容会在远程计算机上显示出来让所有人看到。不过,如果远程计算机的用户使用类似netstat这样的命令查看网络连接,就会看到有另一台计算机通过SSH连接到了该计算机。
要结束SSH会话,只需输入exit,这样你就会回到自己计算机的命令提示符下。
此外,还有一个运行在多种非Linux操作系统上的SSH客户端版本,叫做PuTTY,你可以从www.chiark.greenend.org.uk/~sgtatham/putty/下载它,这样就可以从Windows计算机登录到你的Ubuntu机器了。
管理远程会话
当你打开任何类型的shell来输入命令和运行程序时,你可能会注意到,只要shell窗口关闭,其中正在运行的任何命令也会随之结束。这是因为shell被视为进程的“所有者”,当所有者结束时,它启动的任何进程也会结束。
使用SSH启动远程shell会话时也是如此。每当你注销时,正在运行的任何任务都会结束。这可能会让人感到烦恼,比如你在远程计算机上启动了一个长时间的下载任务,实际上,你必须通过SSH保持登录状态,直到下载完成。
为了解决这个问题,你可以使用screen程序。它虽然不是专门为辅助远程登录而设计的,但完全可以用于这种情况。
screen程序可以启动即使shell窗口关闭、SSH连接中断或丢失也会继续存在的shell会话。通过SSH登录到远程计算机后,你可以在提示符下输入以下命令来启动一个screen会话:
screen按照提示按下空格键启动程序后,不会有任何迹象表明你正在运行一个screen会话。例如,终端窗口底部不会有任务栏。screen完全在后台运行。
下面来看看如何分离和重新连接到一个screen会话。要分离screen会话,按下Ctrl + A,然后按下Ctrl + D。这时你会回到标准shell,实际上,你可以像往常一样断开SSH连接。不过,screen会话仍会在远程计算机的后台运行。为了验证这一点,你可以再次登录,然后输入以下命令:
screen -r这将恢复你的screen会话,你可以继续之前的操作,之前命令的输出也会显示出来。
要退出screen会话,你可以在会话中输入exit,或者按下Ctrl + A,然后按下Ctrl + \(反斜杠)。
screen程序功能强大,要了解更多信息,可以阅读它的手册页。在screen运行时,按下Ctrl + A,然后输入问号(?),可以查看其键盘命令列表。
2.2 在远程计算机之间传输文件
SSH工具提供了两种基本的在计算机之间传输文件的方法:scp和sftp。scp适用于较小文件的传输,如果你要复制大量文件,sftp可能是更好的选择。
使用scp
严格来说,scp只是一个使用底层SSH协议安全地将文件从一台计算机复制到另一台计算机的程序。你不需要通过SSH登录到另一台计算机就可以使用它。例如,如果你只是在自己的计算机上浏览文件,想要将一个文件传输到远程计算机,可以输入以下命令:
scp myfile keir@<IP address>:/home/keir/你需要将<IP address>替换为你要发送文件的计算机的IP地址。也就是说,你首先要指定要复制的本地文件,然后按照与SSH登录相同的格式提供远程计算机的登录详细信息。冒号后面,指定你希望文件复制到的远程计算机上的路径。
如果你已经通过SSH登录到另一台计算机,使用该命令的方式完全相同。假设现在有两台计算机:A和B,你在两台计算机上都有用户账户。坐在计算机A前,你可以通过输入以下命令与计算机B建立SSH连接:
ssh keir@computer_B登录到计算机B后,你发现有一个名为spreadsheet.xls的文件,你想将其复制到本地计算机A上。这时,你可以执行以下命令:
scp spreadsheet.xls keir@computer_A:/home/keir/这将把文件从计算机B复制到计算机A,并将其放置在/home/keir/目录下。
使用scp时,你还可以复制整个目录,只需添加-r命令选项,如下所示:
scp -r mydirectory <username>@<IP address>:/path/使用sftp
要将大量文件复制到远程计算机或从远程计算机复制出来,sftp程序是最佳选择。如果你使用过基于shell的ftp程序,那么使用sftp会感觉很熟悉,因为它们非常相似。
与scp不同的是,你使用sftp以类似于SSH的方式与远程计算机建立连接,但只能使用某些特定的命令。你可以使用以下命令格式启动一个sftp会话:
sftp <username>@<IP address>登录命令的格式和确认加密密钥的规则与SSH登录相同。
sftp命令比较基础。例如,要从远程计算机复制一个文件,只需输入以下命令:
get <filename>这将把文件复制到你在启动sftp会话之前所在的本地计算机目录中。
如果你在文件名后面指定一个路径,文件将被复制到指定的本地目录:
get spreadsheet.xls /home/keir/downloaded_files/从本地计算机向远程计算机发送文件同样简单:
put <filename>在文件名后面指定路径,就可以确保文件保存到远程计算机的特定路径。
需要记住的是,任何以感叹号(!,在Linux术语中称为“bang”)开头的命令都会在本地计算机上作为shell命令执行。例如,如果你想删除本地计算机上的一个文件,可以输入以下命令:
!rm -rf <filename>单独输入一个感叹号会在本地计算机上启动一个shell会话,这样你就可以执行更多任务。完成后,输入exit返回到sftp程序。
下面是一些常用的sftp命令列表:
| 命令 | 功能 |
| — | — |
|cd| 更改远程目录 |
|lcd| 更改本地目录 |
|get| 下载指定文件 |
|ls| 列出远程目录 |
|lls| 列出本地目录 |
|mkdir| 在远程计算机上创建目录 |
|lmkdir| 在本地计算机上创建目录 |
|put| 将指定文件上传到远程计算机 |
|pwd| 打印当前远程目录 |
|rmdir| 删除远程目录 |
|rm| 删除远程文件 |
|exit| 退出sftp|
|!command| 在本地计算机上执行指定命令 |
|!| 启动临时本地shell会话(输入exit返回sftp) |
|help| 显示命令列表 |
2.3 远程访问GUI应用程序
前面我们介绍了如何使用命令行工具连接到远程计算机。但Ubuntu是基于图形桌面的,那么有没有办法运行像Nautilus文件浏览器窗口这样的程序,以便在远程计算机上操作文件呢?答案是肯定的!
Linux的图形子系统X是为跨网络工作而设计的。实际上,如果你在桌面PC上运行Linux,X仍然通过机器内部的回环网络工作(即网络命令发出后又指向发起命令的同一台机器)。因此,可以让远程计算机上的程序在本地计算机的X服务器上运行。应用程序的实际运行工作由远程计算机处理,而图形显示工作由本地计算机处理。
不过需要注意的是,通过网络进行X连接可能会有点慢,肯定不如在本地计算机上运行相同的应用程序那么流畅。这种延迟时间长了可能会让人感到烦躁。
运行远程计算机上的X应用程序
不幸的是,X服务器通信通常是未加密的,所以如果一台计算机直接通过网络(甚至是互联网)连接到X服务器,数据传输将是未加密的,容易被窃听。
好在SSH再次发挥了作用。你可以配置SSH,使远程计算机上的X应用程序能够在本地计算机上运行,数据通过SSH连接传输。使用SSH登录到远程计算机时,同时指定-X标志:
ssh –X <username>@<IP address>登录后,你可以像往常一样输入应用程序的名称来启动它。唯一的区别是,程序会显示在本地计算机的屏幕上,而不是远程计算机上。
通过互联网甚至本地网络使用X并不快,打开菜单或屏幕需要频繁重绘时,你可能会遇到延迟。不过,它确实非常有用。
运行远程连接上的GNOME桌面
甚至可以通过SSH连接运行整个GNOME桌面。也就是说,你可以像坐在远程计算机前一样访问其桌面。
要实现这一点,你需要在本地计算机上启动一个精简的X服务器shell,然后通过SSH连接在远程计算机上启动GNOME桌面。
在你想要发起连接的本地计算机上,关闭所有打开的程序,然后按下Ctrl + Backspace来终止X服务器。如果发现GUI重新启动,再次按下Ctrl + Backspace。
在命令提示符下登录,然后输入以下命令:
xinit这将启动一个基本的X会话,并带有一个xterm shell窗口。然后,你可以使用SSH命令登录到远程计算机,并指定允许通过连接进行X通信:
ssh -X <username>@<IP address>接着输入以下命令:
gnome-session几秒钟后,远程计算机的GNOME桌面将显示出来。注意不要关闭原始的xterm窗口,因为它是gnome-session进程的所有者,关闭它会导致桌面关闭。
同样,远程桌面对鼠标点击和键盘输入的响应会比较慢,但应该还是可以使用的。
如果你经常需要这样做,你可能希望在本地计算机上配置一个仅命令行的运行级别。这意味着你启动时会进入一个非GUI登录提示符,然后可以手动启动自己的X会话(可以在本地计算机上运行GNOME,也可以在远程计算机上运行)。大多数Linux发行版(如Red Hat或SUSE)将运行级别3定义为仅命令行模式,你也可以这样做。
在Ubuntu系统中,运行级别2到5是完全相同的。通常使用运行级别2,运行级别3到5实际上是备用的,可以根据需要进行更改。
要停止在运行级别3下自动启动GUI,输入以下命令:
sudo rm –f /etc/rc3.d/S13gdm之后,你需要修改/etc/inittab文件,使系统启动到修改后的运行级别3。可以使用以下命令将其加载到Gedit文本编辑器中:
sudo gedit /etc/inittab找到以id:2:initdefault:开头的行,将其改为id:3:initdefault:,然后保存文件并重新启动。
登录后,你可以选择启动用于远程连接的X服务器shell,或者通过输入startx在本地计算机上启动通常的GNOME桌面。
2.4 通过远程桌面访问Ubuntu
通过网络访问PC桌面还有一种不太安全但更方便的方法,那就是使用Ubuntu的远程桌面功能。这种方法的优点是,远程计算机的桌面会显示在本地计算机桌面的一个窗口中,不需要终止现有的X服务器并启动新的服务器。
远程桌面使用虚拟网络计算(VNC)软件来共享桌面。这里的关键是“共享”,因为实际上,任何连接的人都将控制主桌面,他们可以控制鼠标和键盘输入。
不过,与通过SSH连接访问X相比,有两个重要的区别:
- 虽然密码是加密传输的,但VNC的其他数据传输不是加密的。虽然可以使用特殊版本的VNC或通过OpenSSH隧道实现完全加密,但在Windows端设置起来可能比较困难。
- 远程桌面不会被黑屏,所以站在远程计算机前的人可以看到你在做什么,这可能会带来安全和隐私风险。
如果你能接受这些问题,那么在计算机上启用远程桌面访问很容易,步骤如下:
1. 点击“系统” -> “首选项”,然后点击“远程桌面”。在“允许其他用户查看你的桌面”旁边打勾,并确保“允许其他用户控制你的桌面”旁边也打勾。在这个选项下方,你可以选择用户是否可以确认每个连接,以及是否要设置密码。这两个选项都可以增加系统的安全性,但确认选项意味着必须有人在计算机前授权传入连接。
2. 在你想要连接到远程桌面的计算机上,点击“应用程序” -> “互联网” -> “终端服务器客户端”。在“计算机”字段中,输入你要连接的计算机的IP地址。在“协议”下拉列表中,选择VNC,然后点击“连接”。
3. 如果设置了密码,系统会提示你输入密码,输入后应该会在一个窗口中看到远程计算机的桌面。完成操作后,只需关闭窗口即可终止连接。
2.5 连接到远程Windows计算机
终端服务器客户端程序可以让你连接到各种远程桌面服务器程序,特别是通过远程桌面协议(RDP)连接到Windows XP或Windows 2000计算机。不过,Windows XP Home、Me、98和95不支持RDP连接,这意味着它们无法运行RDP服务器,也不允许其他计算机访问其桌面。不过,通过一些附加软件,还是可以远程访问这些计算机的桌面。
连接到Windows XP Professional、2000和NT
使用终端服务器客户端访问Windows XP Professional、2000或NT计算机很容易。这里以XP Professional机器为例,但这些说明同样适用于2000和NT。
你可以在“应用程序” -> “互联网”菜单中找到终端服务器客户端程序。打开程序后,在“计算机”字段中输入机器的IP地址或其FQDN(如果适用)。不需要输入用户名、密码或其他详细信息。点击“连接”,会出现一个新窗口,你应该会看到一个XP登录提示。然后使用你的用户名和密码登录到Windows。
需要注意的是,如果你在Windows机器上的用户账户没有设置密码,你将无法登录。这是Windows XP RDP系统的一个小问题,解决方法很简单:使用Windows控制面板中的“用户账户”小程序为自己分配一个密码。
当然,XP计算机需要配置为允许传入RDP连接。要进行配置,右键点击“我的电脑”,选择“属性”,点击“远程”选项卡,确保“允许用户远程连接到此计算机”被选中。
如果这是你第一次通过RDP连接访问Windows计算机,你可能会觉得图形效果很差。这是因为为了在网络上高效传输,图形被大量压缩了。
连接到其他Windows计算机
你可以为几乎任何操作系统下载VNC服务器,包括Windows、Linux和Macintosh OS X。实际上,从Windows 95及以上版本的任何Windows计算机都可以运行VNC服务器。安装完成后,你可以使用Ubuntu系统中的终端服务器客户端程序连接到该计算机的远程桌面。
需要注意的是,任何运行VNC Viewer程序的计算机都可以访问运行VNC服务器的计算机(包括Ubuntu远程桌面功能设置的服务器)。有各种适用于Linux、Windows、Macintosh OS X和其他操作系统(包括PocketPC等)的VNC Viewer程序,你可以在网上搜索“VNC Viewer”来找到这些程序。
和连接到Ubuntu桌面的VNC连接一样,连接到Windows计算机的VNC连接也存在不安全和桌面不黑屏的问题。但如果你能接受这些,那么在Windows机器上设置VNC服务器很容易。TightVNC是一个很好的VNC版本,你可以从www.tightvnc.com下载Windows的自安装包。安装过程中,会询问你是否要将TightVNC注册为系统服务,勾选该选项,这样每次计算机启动时VNC服务器都会自动启动。
安装完成后,会出现服务器配置程序,你可以在“密码”字段中覆盖默认密码来更改密码。
连接到远程Windows计算机也很简单。在Ubuntu系统上,打开终端服务器客户端(应用程序 -> 互联网),在“计算机”字段中输入远程计算机的IP地址。在“协议”下拉列表中选择VNC,然后点击“连接”。系统会提示你输入远程计算机的VNC服务器密码,输入后,远程桌面将显示在一个窗口中。
综上所述,通过上述这些方法,你可以在Ubuntu系统中灵活地调度任务,并实现对各种计算机的远程访问。无论是定期执行系统维护任务,还是远程操作计算机,都能轻松应对。
Ubuntu系统任务调度与远程访问全攻略(续)
3. 总结与操作流程梳理
在前面的内容中,我们详细介绍了Ubuntu系统中任务调度和远程访问的多种方法,下面为大家梳理一下关键操作流程和要点。
3.1 任务调度操作流程
- 使用crontab调度任务:
1. 打开终端,输入crontab -e编辑个人crontab文件。
2. 按照分钟 小时 日期 月份 星期 命令的格式添加任务,例如01 12 15 * * tar -cjf /home/keir/mybackup.tar.bz2 /home/keir。
3. 保存并退出编辑器(如GNU nano中按Ctrl + X)。 - 使用anacron调度任务:
1. 以超级用户权限编辑/etc/anacrontab文件。
2. 按照days delay name of task command的格式添加任务,例如1 15 backup_job tar -cjf /home/keir/mybackup.tar.bz2 /home/keir。
3. 保存文件,anacron会在系统启动时自动运行,也可手动输入sudo anacron运行。 - 使用at调度一次性任务:
1. 输入at 时间指定任务执行时间,如at noon tomorrow或at 13:00 jun 25 2008。
2. 在模拟shell提示符下输入要执行的命令,按Ctrl + D结束编辑。
3. 可通过atq查看任务列表,atrm 编号删除任务。
下面是任务调度的mermaid流程图:
graph LR A[开始] --> B{选择调度方式} B --> C[crontab] B --> D[anacron] B --> E[at] C --> C1[编辑crontab文件] C1 --> C2[添加任务条目] C2 --> C3[保存退出] D --> D1[编辑anacrontab文件] D1 --> D2[添加任务条目] D2 --> D3[保存文件] E --> E1[指定执行时间] E1 --> E2[输入执行命令] E2 --> E3[结束编辑] E3 --> E4[查看或删除任务] C3 --> F[完成调度] D3 --> F E4 --> F3.2 远程访问操作流程
- 使用SSH远程登录:
1. 确保远程计算机运行SSH服务器并开放端口22。
2. 在本地终端输入ssh <username>@<IP address>登录,首次登录需确认加密密钥。
3. 输入密码登录远程计算机,使用exit退出会话。 - 使用scp传输文件:
1. 本地到远程:scp 本地文件 <username>@<IP address>:远程路径。
2. 远程到本地:登录远程计算机后,scp 远程文件 <username>@本地IP:本地路径。
3. 复制目录添加-r选项。 - 使用sftp传输文件:
1. 输入sftp <username>@<IP address>连接远程计算机。
2. 使用get 文件名下载文件,put 文件名上传文件。
3. 可使用!命令在本地执行shell命令。 - 远程访问GUI应用程序:
1. 登录远程计算机:ssh –X <username>@<IP address>。
2. 启动应用程序,程序将显示在本地屏幕。 - 运行远程GNOME桌面:
1. 本地关闭程序,终止X服务器(Ctrl + Backspace),输入xinit启动X会话。
2.ssh -X <username>@<IP address>登录远程计算机,输入gnome-session启动桌面。 - 使用Ubuntu远程桌面(VNC):
1. 本地开启远程桌面功能,设置相关权限和密码。
2. 远程计算机打开终端服务器客户端,输入IP和协议(VNC)连接。 - 连接远程Windows计算机:
- RDP(Windows XP Professional、2000、NT):打开终端服务器客户端,输入IP或FQDN连接,输入用户名和密码登录。
- VNC(其他Windows):在Windows安装VNC服务器(如TightVNC),设置密码。Ubuntu端打开终端服务器客户端,输入IP和协议(VNC)连接。
以下是远程访问的mermaid流程图:
graph LR A[开始] --> B{选择访问方式} B --> C[SSH登录] B --> D[文件传输] B --> E[GUI应用访问] B --> F[远程桌面访问] C --> C1[确认远程SSH服务] C1 --> C2[输入登录命令] C2 --> C3[确认密钥输入密码] C3 --> C4[登录远程计算机] D --> D1{选择传输工具} D1 --> D2[scp] D1 --> D3[sftp] D2 --> D21[本地到远程或远程到本地复制] D3 --> D31[连接远程计算机] D31 --> D32[下载或上传文件] E --> E1[登录远程计算机(-X)] E1 --> E2[启动应用程序] F --> F1{选择桌面类型} F1 --> F2[Ubuntu远程桌面(VNC)] F1 --> F3[Windows远程桌面] F2 --> F21[本地开启功能设置权限] F21 --> F22[远程客户端连接] F3 --> F31{Windows版本} F31 --> F32[XP Pro、2000、NT(RDP)] F31 --> F33[其他(VNC)] F32 --> F321[客户端输入信息连接登录] F33 --> F331[Windows安装VNC服务器设置密码] F331 --> F332[Ubuntu客户端连接] C4 --> G[完成访问] D21 --> G D32 --> G E2 --> G F22 --> G F321 --> G F332 --> G4. 常见问题及解决方法
在使用上述任务调度和远程访问方法时,可能会遇到一些常见问题,下面为大家提供相应的解决方法。
| 问题类型 | 问题描述 | 解决方法 |
|---|---|---|
| 任务调度 | crontab任务未执行 | 1. 检查任务时间设置是否正确。 2. 确认命令是否可在命令行正常执行。 3. 检查文件权限。 |
| anacron任务未执行 | 1. 检查/etc/anacrontab文件配置是否正确。2. 确保anacron服务正常运行。 | |
| at任务未执行 | 1. 检查时间格式是否正确。 2. 查看 atq列表确认任务是否存在。 | |
| 远程访问 | SSH无法连接 | 1. 检查远程计算机SSH服务是否运行。 2. 确认防火墙是否开放端口22。 3. 检查IP地址和用户名是否正确。 |
| scp/sftp传输失败 | 1. 检查网络连接是否正常。 2. 确认文件路径和权限是否正确。 | |
| 远程GUI应用显示缓慢 | 1. 检查网络带宽是否充足。 2. 尝试减少同时运行的程序。 | |
| 远程桌面连接失败 | 1. 检查VNC或RDP服务是否正常。 2. 确认密码是否正确。 3. 检查防火墙设置。 |
5. 技巧与建议
- 任务调度:
- 定期备份crontab和anacrontab文件,防止配置丢失。
- 使用注释为任务添加说明,方便后续管理。
- 对于重要任务,设置多个时间点或使用anacron确保执行。
- 远程访问:
- 生成SSH密钥对,使用密钥认证提高安全性。
- 在传输大文件时,使用sftp并结合
screen防止中断。 - 对于远程桌面访问,可调整显示分辨率和颜色深度以提高性能。
通过掌握这些任务调度和远程访问的方法、操作流程、解决常见问题的技巧以及实用建议,你可以更加高效、安全地使用Ubuntu系统,满足各种工作和使用需求。无论是系统维护、文件传输还是远程办公,都能轻松应对。希望大家在实践中不断探索和总结,充分发挥Ubuntu系统的强大功能。