1. 一些有用的命令
| 命令 | 含义 | 适用场景 |
|---|---|---|
| who | 列出哪些用户登陆 | 服务器资源不足时可私下联系调度资源 |
| ps -aux | 列出所有进程及用户 | 查看哪些进程耗资源 |
| kill -9 <pid> | 强制结束<pid>进程 | 端口被绑定时,一般需要使用此命令强制终止qemu进程 |
| free | 查看内存使用情况 | qemu启动失败时可验证 |
| df | 查看磁盘使用情况 | 当磁盘不足时查看 |
| man <command> | 查看<command>的手册,如man ps查看ps命令的手册, man pthread_create查看pthread_create的声明及含义、使用方式 |
对命令、系统调用不理解或者不知道该加哪些头文件时 |
| scp <from> <to> | 把<from>复制到<to>目录下,如果<from>是目录,则需要用 scp -r <from> <to> | 提交实验报告到服务器,具体使用方式参见proj2和proj3的实验说明 |
2. 简化连接方法
利用ssh登陆时,可以通过公钥密钥来避免每次都要输入密码
2.1 生成公钥密钥
在你的客户端(如git bash),利用以下命令生成一对密钥
ssh-keygen
一直敲回车确认。一般它会告诉你生成的密钥放在了什么地方,比如 git bash 默认放在了~/.ssh目录下。进入此目录,查看有哪些文件
$ cd ~/.ssh
$ ls
config id_rsa id_rsa.pub known_hosts known_hosts.old
里面的id_rsa是你的私钥,id_rsa.pub是你的公钥。
2.2 让远程服务器信任你
你需要把公钥交给云服务器,让云服务器信任你的机器。怎么让云服务器信任你的机器呢?你需要在云服务器的~/.ssh目录下的名为authorized_keys文件里添加上你前面生成的id_rsa.pub的内容。如果目录不存在,创建;如果文件不存在,创建。
最简单的方式,利用ssh-copy-id命令。例如
$ ssh-copy-id alpha@xzhu.info
根据提示输入即可。
当然,你也可以手动添加,远程登陆到云服务器上,通过mkdir命令创建文件夹(如果不存在),然后通过复制粘贴的方式把本地id_rsa.pub的内容添加到云服务器的authorized_keys文件里面(不存在此文件则创建)。
可以参考https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys-on-ubuntu-1604
2.3 给服务器起个简短的名字
有同学觉得IP地址长,想申请一个域名,但是在国内申请域名需要备案,会消耗一部分时间。在你不打算搭建网站的前提下,可以无需申请域名,你只需和你的ssh客户端约定好一个短名字即可。
具体方法如下。打开你的ssh客户端,如git bash。执行cd ~/.ssh进入你本地的.ssh目录下。创建config文件(如果不存在的话),在里面输入类似以下内容
Host uos
HostName xzhu.info
Port 22
User ubuntu
IdentityFile ~/.ssh/id_rsa
其中,Host后面跟的uos就是别名,你可以起任意你能记住的字符串;HostName后面填服务器的IP地址,或者填本实验平台的地址 xzhu.info;端口号一般是22;User填你的用户名;IdentityFile填你的私钥文件,一般就是~/.ssh/id_rsa。保存退出。
当做完这些后,你在命令行输入ssh uos,则可以直接登陆到云服务器上。
$ ssh uos
Welcome to Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-53-generic i686)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
New release '18.04.2 LTS' available.
Run 'do-release-upgrade' to upgrade to it.
Last login: Sat Apr 20 10:06:26 2019 from 157.0.78.85
ubuntu@VM-199-186-ubuntu:~$