文章目录
- 上周作业:
- 1.自己改系统:在root里重新建一个账号
- 2.添加环境变量,path追加一个目录,给环境变量设置值
- 3.把windows/linux的目录挂载到linux上
- 4.查询/proc,获取系统的用户时间、系统时间、空闲时间
- 2.cat /proc/uptime
- 5.安装anoconda,在Linux建立新的环境
- 6.SSH
- SSH概念
- ssh的安装
- ssh远程登陆
- 使用ssh在远程后台不中断地跑程序
- SSH数据传输
- scp 跨机远程拷贝
- 作业:研究这一条指令的含义
上周作业:
1.自己改系统:在root里重新建一个账号
设置新用户:
更换用户:
一个疑问:新账号下,命令行为什么没有前缀
2.添加环境变量,path追加一个目录,给环境变量设置值
在Linux系统下,如果你下载并安装应用程序,很有可能在键入它的名称的时候出现 “command not found ” 的提示内容。 如果每次都到安装目录文件夹内,找到可执行文件来进行操作就太繁琐了。 这涉及到环境变量path的设置问题,而path 的设置也是在Linux下定制环境变量的一个组成部分
那么什么是环境变量?简单说,就是指定一个目录,运行软件的时候,相关的程序将会按照该目录寻找相关文件。 设置变量对于一般人最实用的功能就是: 不用拷贝某些dll文件到系统目录中了,而path 这一系统变量就是系统搜索dll文件的一系列路径
如果想将一个路径加入到 $PATH 中,可以控制台中设置 (只对当前shell有效):
PATH=$PATH:/tmp/xie
3.把windows/linux的目录挂载到linux上
现实中会有这样的场景 , 开发人员在 Windows 上面写代码 , 然后放到 Linux 进行编译 , 达到这个目的我们可以在 Linux 上使用 mount
命令挂载 Windows 共享文件夹 , 就像将 Windows 里面的共享目录当成一个U盘插到 Linux主机上面 , 然后 Linux 可以直接访问代码进行编译编译 。
先提前将share文件在属性里共享
$ mkdir myshare2 #建立文件夹
$ sudo mount -t cifs -o username=YUANMU //192.168.***.1/share myshare2/
192.168.***.1是username的ip地址,share是windows共享的文件,myshare2是挂载到Linux的位置
4.查询/proc,获取系统的用户时间、系统时间、空闲时间
内核态时间
/proc文件系统是一种特殊的、由软件创建的文件系统,内核使用它向外界导出信息,/proc系统只存在内存当中,而不占用外存空间。/proc下面的每个文件都绑定于一个内核函数,用户读取文件时,该函数动态地生成文件的内容。也可以通过写/proc文件修改内核参数。最初开发 /proc 文件系统是为了提供有关系统中进程的信息。但是由于这个文件系统非常有用,因此内核中的很多元素也开始使用它来报告信息,或启用动态运行时配置。
1./proc/uptime
这个文件给出自从上次系统自启动以来的秒数,以及其中有多少秒处于空闲。这主要供uptime程序使用。比较这两个字能够告诉你长期来看CPU周期浪费的比例。
20:54:13 up 1:43, 1 user 表示系统目前一个用户,运行时间:1h43min,用户时间(真实时间):20:54:13
2.cat /proc/uptime
cat /proc/uptime,输出第一个数字是系统已运行的时间,运用系统工具date即可算出系统启动时间。第二个参数是代表系统空闲时间(以秒为单位),运行时间/空闲时间=空闲率。
也可以查看/proc/uptime文件计算系统运行时间
cat /proc/uptime
date -d "$(awk -F. '{print $1}' /proc/uptime) second ago" +"%Y-%m-%d %H:%M:%S"
cat /proc/uptime| awk -F. '{run_days=$1 / 86400;run_hour=($1 % 86400)/3600;run_minute=($1 % 3600)/60;run_second=$1 % 60;printf("系统已运行:%d天%d时%d分%d秒",run_days,run_hour,run_minute,run_second)}'
5.安装anoconda,在Linux建立新的环境
6.SSH
SSH概念
**SSH是一种网络协议,用于计算机之间的加密登录。**如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。
SSH只是一种协议,存在多种实现,既有商业实现,也有开源实现。本文针对的实现是OpenSSH,它是自由软件,应用非常广泛。这里只讨论SSH在Linux Shell中的用法。如果要在Windows系统中使用SSH,会用到另一种软件PuTTY。
ssh的安装
SSH分客户端openssh-client和openssh-server
如果你只是想登陆别的机器的SSH只需要安装openssh-client(ubuntu有默认安装,如果没有则sudoapt-get install openssh-client),如果要使本机开放SSH服务就需要安装openssh-server。
Ubuntu缺省已经安装了ssh client。
ssh远程登陆
这里我们希望实现:将虚拟机作为一个服务器,然后在windows登录虚拟机
先在Linux安装openssh-server
然后打开windows的cmd
ssh vm -layuan
这里vm为服务器的ip地址,因为我已经在host文件里存储ip地址为vm了,所以直接输入vm。-l表示进入linux用户。用户名为ayuan。最后输入ayuan的密码即可。
得到如下结果,这样就可以直接在windows的cmd运行linux。
使用ssh在远程后台不中断地跑程序
Linux关闭ssh(关闭终端等)后运行的程序或者服务自动停止,如python3 a.py &。
解决:使用nohup命令让程序在关闭窗口(切换SSH连接)的时候程序还能继续在后台运行。
nohup python3 a.py &
SSH数据传输
SSH不仅可以用于远程主机登录,还可以直接在远程主机上执行操作
scp 跨机远程拷贝
scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。可能会稍微影响一下速度。两台主机之间复制文件必需得同时有两台主机的复制执行帐号和操作权限。
作业:研究这一条指令的含义
[~]$ cat /proc/stat
cpu 432661 13295 86656 422145968 171474 233 5346
cpu0 123075 2462 23494 105543694 16586 0 4615
cpu1 111917 4124 23858 105503820 69697 123 371
cpu2 103164 3554 21530 105521167 64032 106 334
cpu3 94504 3153 17772 105577285 21158 4 24
intr 1065711094 1057275779 92 0 6 6 0 4 0 3527 0 0 0 70 0 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ctxt 19067887
btime 1139187531
processes 270014
procs_running 1
procs_blocked 0
输出解释
CPU 以及CPU0、CPU1、CPU2、CPU3每行的每个参数意思(以第一行为例)为:
参数 解释(前七个数据依次对应)
user (432661) 从系统启动开始累计到当前时刻,用户态的CPU时间(单位:jiffies) ,不包含 nice值为负进程。1jiffies=0.01秒
nice (13295) 从系统启动开始累计到当前时刻,nice值为负的进程所占用的CPU时间(单位:jiffies)
system (86656) 从系统启动开始累计到当前时刻,核心时间(单位:jiffies)
idle (422145968) 从系统启动开始累计到当前时刻,除硬盘IO等待时间以外其它等待时间(单位:jiffies)
iowait (171474) 从系统启动开始累计到当前时刻,硬盘IO等待时间(单位:jiffies) ,
irq (233) 从系统启动开始累计到当前时刻,硬中断时间(单位:jiffies)
softirq (5346) 从系统启动开始累计到当前时刻,软中断时间(单位:jiffies)
CPU时间=user+system+nice+idle+iowait+irq+softirq
“intr”这行给出中断的信息,第一个为自系统启动以来,发生的所有的中断的次数;然后每个数对应一个特定的中断自系统启动以来所发生的次数。
“ctxt”给出了自系统启动以来CPU发生的上下文交换的次数。
“btime”给出了从系统启动到现在为止的时间,单位为秒。
“processes (total_forks) 自系统启动以来所创建的任务的个数目。
“procs_running”:当前运行队列的任务的数目。
“procs_blocked”:当前被阻塞的任务的数目。*