日常运维(Ⅳ)
二十四、rsync工具介绍
Linux系统下有很多数据备份工具,常用的是rsync,从字面意思理解为remote sync(远程同步)。rsync不仅可以远程同步数据(类似于scp),而且可以本地同步数据(类似于cp),但不同于cp或者scp的一点是,它不会覆盖以前的数据(如果数据已经存在),而是先判断已经存在的数据和新数据的差异,只有数据不同时才会把不相同的部分覆盖。
Rsync是一款快速且功能非常多的文件复制工具。它可以在本地复制,通过任何远程shell或从另一台主机复制到/从远程rsync守护进程。它提供了大量的选项控制其行为的每个方面并允许非常灵活指定要复制的文件集。它是着名的其增量转换算法,可减少发送的数据量通过发送只有来源之间的差异在网络上文件和目标中的现有文件。 Rsync很广泛用于备份和镜像以及作为改进的复制命令日常使用。
安装rsync包——>yum install -y rsync
[root@damozhiying ~]# rsync -av /etc/passwd /tmp/1.txt //把/etc/passwd文件拷贝到/tmp下为1.txtsending incremental file listpasswdsent 1,747 bytes received 35 bytes 3,564.00 bytes/sectotal size is 1,655 speedup is 0.93
上面命令中:
- a参数中包含了很多选项,后面会详细介绍
- v查看到可视化过程
- 查看到发送了多少个字节
- 多少字节每秒
- 文件一共有多大
- 速度是多少
如果要改成远程复制,数据备份的格式是: 用户名@IP:path,比如192.168.112.136:/root/.具体用法如下:
[root@damozhiying ~]# rsync -av /etc/passwd root@192.168.112.136:/tmp/1.txtThe authenticity of host '192.168.112.136 (192.168.112.136)' can't be established.ECDSA key fingerprint is SHA256:ZQlXi+kieRwi2t64Yc5vUhPPWkMub8f0CBjnYRlX2Iw.ECDSA key fingerprint is MD5:ff:9f:37:87:81:89:fc:ed:af:c6:62:c6:32:53:7a:ad.Are you sure you want to continue connecting (yes/no)? yes //确实是否连接Warning: Permanently added '192.168.112.136' (ECDSA) to the list of known hosts.root@192.168.112.136's password: //输入密码sending incremental file listsent 45 bytes received 12 bytes 3.08 bytes/sec //此时出现详细同步的信息total size is 1,655 speedup is 29.04[root@damozhiying ~]#
注意:这里要求远程的机器也必须安装有rsync,需要验证密码是因为这里没有做两机互联.
一些常用的命令语法格式:
- rsync [OPTION]... SRC DEST
- rsync [OPTION]... SRC [USER@]host:DEST // 第一例不加user,默认的就是root
- rsync [OPTION]... [USER@]HOST:SRC DEST//从远程目录同步数据到本地
- rsync [OPTION]... [USER@]HOST::SRC DEST
- rsync [OPTION]... SRC [USER@]HOST::DEST
里面SRC是源文件,DEST是目标目录或者文件; [USER@]HOST是远程服务器,host代表IP,方括号可以省略;
二十五、rsync常用选项
rsync是一个功能非常强大的工具,其命令也有很多功能特色选项。
- -a 包含-rtplgoD参数选项;
- -r 同步目录时要加上,类似cp时的-r选项;
- -v 同步时显示一些信息,让我们知道同步的过程;
- -l 保留软连接; 若是拷贝的原目录里面有一个软链接文件,那这个软链接文件指向到了另外一个目录下。在加上-l,它会把软链接文件本身拷贝到目标目录里面去
- -L 加上该选项后,同步软链接时会把源文件给同步;
- -p 保持文件的权限属性;
- -o 保持文件的属主;
- -g 保持文件的属组;
- -D 保持设备文件信息;/dev/sdb1 这样的设备文件有它的特殊性,如果不加-D 可能拷贝过去就是一个非常普通的文件,不能当设备来用
- -t 保持文件的时间属性;
- --delete 删除DEST中SRC没有的文件;
- --exclude 过滤指定文件,如--exclude “logs”会把文件名包含logs的文件或者目录过滤掉,不同步;
- -P 显示同步过程,比如速率,比-v更加详细;
- --progress 同-P功能一样;
- -u 加上该选项后,如果DEST中的文件比SRC新,则不同步;
- -z 传输时压缩;
上述选项较多,常用的有**-a,-v,-z,--delete和--exclude.**
二十六、rsync通过ssh方式同步
把文件同步到远程机器
[root@damozhiying ~]# rsync -av /etc/passwd 192.168.112.138:/tmp/ying.txtroot@192.168.112.138's password: sending incremental file listpasswdsent 1,747 bytes received 35 bytes 209.65 bytes/sectotal size is 1,655 speedup is 0.93
在ying02机器(192.168.112.138)上,查看同步情况
[root@ying02 ~]# cat /tmp/ying.txt |headroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinsync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownhalt:x:7:0:halt:/sbin:/sbin/haltmail:x:8:12:mail:/var/spool/mail:/sbin/nologinoperator:x:11:0:operator:/root:/sbin/nologin[root@ying02 ~]# ip addr show ens332: ens33:mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:c6:2c:24 brd ff:ff:ff:ff:ff:ff inet 192.168.112.138/24 brd 192.168.112.255 scope global ens33 valid_lft forever preferred_lft forever inet6 fe80::964f:be22:ddf2:54b7/64 scope link valid_lft forever preferred_lft forever
把远程文件拉回来
[root@damozhiying ~]# rsync -avP 192.168.112.138:/tmp/ying.txt /tmp/123.txt //把远程的文件搬回到本机root@192.168.112.138's password: receiving incremental file listying.txt 1,655 100% 1.58MB/s 0:00:00 (xfr#1, to-chk=0/1)sent 43 bytes received 1,749 bytes 210.82 bytes/sectotal size is 1,655 speedup is 0.92
假如对方的机器端口不是22;
[root@damozhiying ~]# rsync -avP -e "ssh -p 22" /etc/passwd 192.168.112.138:/tmp/ying.txt //指定端口,-e后面的命令root@192.168.112.138's password: sending incremental file listsent 45 bytes received 12 bytes 12.67 bytes/sectotal size is 1,655 speedup is 29.04
ssh -p 22 是一个命令,可以直接连接对方机器;
[root@damozhiying ~]# ssh -p 22 192.168.112.138root@192.168.112.138's password: Last login: Mon Jun 18 10:49:34 2018 from 192.168.112.1
"--rsh=ssh -p 22" 也可以指定端口;注意与 -e "ssh -p 22" 的区别
[root@damozhiying ~]# rsync -P ./123.txt 192.168.112.138:/root/ root@192.168.112.138's password: 123.txt 152 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=0/1)[root@damozhiying ~]# rsync -P -e "ssh -p 22" ./520.txt 192.168.112.138:/root/ // -e "ssh -p 22" 指定端口root@192.168.112.138's password: 520.txt 68 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=0/1)[root@damozhiying ~]# rsync -P "--rsh=ssh -p 22" ./999.txt 192.168.112.138:/root/ //"--rsh=ssh -p 22" 指定端口root@192.168.112.138's password: 999.txt 0 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=0/1)
二十七、rsync通过服务同步
这种方式可以理解为:在远程主机上建立一个rsync服务器,在服务器上配置好rsync的各种应用,然后将本机作为rsync的一个客户端连接远程rsync服务器,下面是步骤说明:
27.1 通过设置etc/rsyncd.conf演示
把下面文件写入配置文件/etc/rsyncd.conf
[root@damozhiying ~]# vim /etc/rsyncd.conf //编辑文件port=873log file=/var/log/rsync.logpid file=/var/run/rsyncd.pidaddress=192.168.112.136[test]path=/tmp/rsyncuse chroot=truemax connections=4read only=nolist=trueuid=rootgid=rootauth users=testsecrets file=/etc/rsyncd.passwdhosts allow=192.168.112.138
启动rsync服务
[root@damozhiying ~]# rsync --daemon //启动rsync服务[root@damozhiying ~]# ps aux |grep rsyncroot 1317 0.0 0.0 114740 568 ? Ss 09:22 0:00 rsync --daemonroot 1343 0.0 0.0 112720 980 pts/0 S+ 09:24 0:00 grep --color=auto rsync[root@damozhiying ~]# netstat -lntp //监听IP,端口Active Internet connections (only servers)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 688/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 930/master tcp 0 0 192.168.112.136:873 0.0.0.0:* LISTEN 1317/rsync tcp6 0 0 :::22 :::* LISTEN 688/sshd tcp6 0 0 ::1:25 :::* LISTEN 930/master
建立试验目录,并给予777权限
[root@damozhiying ~]# mkdir /tmp/rsync[root@damozhiying ~]# chmod 777 /tmp/rsync[root@damozhiying ~]# ls -ld !$ls -ld /tmp/rsyncdrwxrwxrwx 2 root root 6 6月 19 10:14 /tmp/rsync
telnet 192.168.112.136 873 检测端口是否通畅
[root@ying02 ~]# telnet 192.168.112.136 873Trying 192.168.112.136...telnet: connect to address 192.168.112.136: No route to host
关闭firewalld
[root@damozhiying ~]# systemctl stop firewalld[root@damozhiying ~]# iptables -nvLChain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination
在ying02客户端上给服务器写文件;
[root@ying02 ~]# rsync -avP /tmp/ying.txt 192.168.112.136::test/ying02.txtPassword: @ERROR: auth failed on module test //配置文件中auth错误rsync error: error starting client-server protocol (code 5) at main.c(1648) [sender=3.1.2]
修改配置文件/etc/rsyncd.conf
port=873log file=/var/log/rsync.logpid file=/var/run/rsyncd.pidaddress=192.168.112.136[test]path=/tmp/rsyncuse chroot=truemax connections=4read only=nolist=trueuid=rootgid=root#auth users=test //定义用户名; 加上#,意味着不生效#secrets file=/etc/rsyncd.passwd //定义密码;加上#,意味着不生效hosts allow=192.168.112.138
再次执行传输,此时不需要,密码
[root@ying02 ~]# rsync -avP /tmp/ying.txt 192.168.112.136::test/ying02.txtsending incremental file listying.txt 1,655 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=0/1)sent 1,749 bytes received 35 bytes 3,568.00 bytes/sectotal size is 1,655 speedup is 0.93
查看传输结果
[root@damozhiying ~]# ls /tmp/rsync/ying02.txt
27.2 配置文件详解
etc/rsyncd.conf文件内容释义:
- port :指定在哪个端口启动rsyncd服务,默认是873端口。
- log file :指定日志文件。
- pid file :指定pid文件,这个文件的作用涉及服务的启动、停止等进程管理操作。
- address :指定启动rsyncd服务的IP。假如你的机器有多个IP,就可以指定由其中一个启动rsyncd服务,如果不指定该参数,默认是在全部IP上启动。
- [] :指定模块名,里面内容自定义。
- path : 指定数据存放的路径。
- use chroot true|false : 表示在传输文件前首先chroot到PATH参数所指定的目录下。这样做的原因是实现额外的安全防护,但缺点是需要以roots权限,并且不能备份指向外部的符号连接所指向的目录文件。默认情况下chroot值为true,如果你的数据当中有软连接文件,建议设置成false。
- max connections :指定最大的连接数,默认是0,即没有限制。
- read only ture|false :如果为true,则不能上传到该模块指定的路径下。
- list :表示当用户查询该服务器上的可用模块时,该模块是否被列出,设定为true则列出,false则隐藏。
- uid/gid :指定传输文件时以哪个用户/组身份传输。
- auth users 指定传输时要使用的用户名。
- secrets file :指定密码文件,该参数连同上面的参数如果不指定,则不使用密码验证。注意该密码文件的权限一定要是600。用户名:密码
- hosts allow :表示被允许连接该模块的主机,可以是IP或者网段,如果是多个,中间用空格隔开。 刚才提到了选项use chroot,默认为ture,首先在主机的130的/root/rsync/test1/目录下创建软链接文件:
- use chroot=true|false 当有软连接,需要给其定义为false;
第一步:在服务端,建立一个软连接
[root@damozhiying ~]# cd /tmp/rsync/[root@damozhiying rsync]# lsying02.txt[root@damozhiying rsync]# ln -s /etc/passwd ./12.txt //建立软连接文件[root@damozhiying rsync]# ls -l总用量 4lrwxrwxrwx 1 root root 11 6月 19 13:53 12.txt -> /etc/passwd //软连接文件创建成功 -rw-r--r-- 1 root root 1655 6月 10 07:49 ying02.txt[root@damozhiying rsync]# vim /etc/rsyncd.conf //修改配置文件
第二步:按下图操作,修改配置文件/etc/rsyncd.conf
第三步:在客户端ying02上,开始同步test模块
[root@ying02 ~]# rsync -avLP 192.168.112.136::test/ /tmp/test/ //从服务端传输到test目录receiving incremental file list12.txt 1,655 100% 1.58MB/s 0:00:00 (xfr#1, to-chk=1/3)sent 43 bytes received 1,787 bytes 3,660.00 bytes/sectotal size is 3,310 speedup is 1.81[root@ying02 ~]# ls -l /tmp/test/ 总用量 8-rw-r--r--. 1 root root 1655 6月 10 07:49 12.txt //成功接收到刚创建的软件接文件12.txt-rw-r--r--. 1 root root 1655 6月 10 07:49 ying02.txt[root@ying02 ~]# cat /tmp/test/12.txt |head //查看12.txt文件root:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinsync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownhalt:x:7:0:halt:/sbin:/sbin/haltmail:x:8:12:mail:/var/spool/mail:/sbin/nologinoperator:x:11:0:operator:/root:/sbin/nologin
- max connections:指定最大的连接数;默认为0
max connections=4 //我们配置文件为设置为4
- read only ture|false :如果为true,则不能上传到该模块指定的路径下。
read only=no //如果为ture,则不能给服务端写数据
- list:该模块是否被列出,设定为true则列出,false则隐藏。(--port 8730 指定端口)
配置文件为:list=true
[root@ying02 ~]# rsync --port=873 192.168.112.136::test
更改配置文件,list=false
[root@ying02 ~]# rsync --port=873 192.168.112.136::[root@ying02 ~]#
- uid/gid :指定传输文件时以哪个用户/组身份传输。
[root@damozhiying ~]# ls -l /tmp/rsync/总用量 4lrwxrwxrwx 1 root root 11 6月 19 13:53 12.txt -> /etc/passwd //配置文件为root,则传输文件也为root-rw-r--r-- 1 root root 1655 6月 10 07:49 ying02.txt
-auth users 指定传输时要使用的用户名;
- secrets file :指定密码文件;
第一步:新建rsyncd.passwd文件,并且设置600权限;
[root@damozhiying ~]# vim /etc/rsyncd.passwd test:ying //书写格式, 用户名:密码[root@damozhiying ~]# chmod 600 !$ //指定600权限chmod 600 /etc/rsyncd.passwd
第二步:在客户端ying02,同步test目录;此时不需要输入密码
[root@ying02 ~]# rsync -avP /tmp/test/ --port=873 test@192.168.112.136::test/ //注意用户要使用用户名sending incremental file list12.txt //同步的时候不需要输入密码 1,655 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=1/3)sent 1,787 bytes received 35 bytes 3,644.00 bytes/sectotal size is 3,310 speedup is 1.82
第三步:在客户端ying02,设置密码文件
[root@ying02 ~]# vi /etc/rsync_pass.txt //在文本里面只输入 密码[root@ying02 ~]# chmod 600 !$chmod 600 /etc/rsync_pass.txt[root@ying02 ~]# rsync -avP /tmp/test/ --port=873 --password-file=/etc/rsync_pass.txt test@192.168.112.136::test/sending incremental file listsent 85 bytes received 12 bytes 194.00 bytes/sectotal size is 3,310 speedup is 34.12[root@ying02 ~]# touch /tmp/test/3.txt //新建1个文件[root@ying02 ~]# rsync -avP /tmp/test/ --port=873 --password-file=/etc/rsync_pass.txt test@192.168.112.136::test/sending incremental file list ./3.txt //同步它,也不需要输入密码 0 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=1/4)sent 150 bytes received 38 bytes 376.00 bytes/sectotal size is 3,310 speedup is 17.61
- hosts allow=IP 定义哪个IP连接它
hosts allow=192.168.112.136 1.1.1.1 192.168.112.138 2.2.2.2.2 //指定多个IP,用空格隔开hosts allow=192.168.133.0/24 //定义IP段
二十八、Linux系统日志
日志记录了系统每天发生的各种各样的事情,比如监测系统状况、排查系统故障等,你可以通过他来检查错误发生的原因。日志的主要功能是审计和监测,还可以实时的监测系统状态,监测和追踪侵入者等等。
28.1 系统日志及切割
系统日常日志 /var/log/message; 它是核心系统日志文件,包含了系统启动时的引导消息,以及系统运行时的其他状态消息。IO错误、网络错误和其他系统错误都会记录到这个文件中。另外其他信息,比如某个人的身份切换为root以及用户自定义安装的软件(apache)的日志也会在这里列出。
[root@damozhiying ~]# ls /var/log/messages/var/log/messages[root@damozhiying ~]# du -sh /var/log/messages1.5M /var/log/messages
在查看日志的时候,会发现日志自动切割了。
[root@damozhiying ~]# ls /var/log/messages*/var/log/messages /var/log/messages-20180603 /var/log/messages-20180618/var/log/messages-20180528 /var/log/messages-20180610
linux系统中有一个logrotate服务,会自动切割日志,防止无限制的增加。
[root@damozhiying ~]# cat /etc/logrotate.conf# see "man logrotate" for details# rotate log files weekly //每周轮换一次日志文件 weekly //每周切割一次# keep 4 weeks worth of backlogs //保持4周的积压rotate 4 //4周一次轮换# create new (empty) log files after rotating old ones //在轮换旧的日志文件后创建新的(空的)日志文件create //创建新的# use date as a suffix of the rotated file //使用日期作为轮换文件的后缀dateext //以之为后缀名# uncomment this if you want your log files compressed //如果你想压缩日志文件,请取消注释#compress //是否需要压缩,压缩成 .tar.gz # RPM packages drop log rotation information into this directoryinclude /etc/logrotate.d# no packages own wtmp and btmp -- we'll rotate them here/var/log/wtmp { monthly create 0664 root utmp minsize 1M rotate 1}/var/log/btmp { //切割该文件,指定权限,属主,属组 missingok monthly create 0600 root utmp rotate 1}# system-specific logs may be also be configured here. //系统特定的日志也可以在这里配置。
查看 /etc/logrotate.d/syslog
[root@damozhiying ~]# ls /etc/logrotate.dbootlog chrony syslog wpa_supplicant yum[root@damozhiying ~]# cat /etc/logrotate.d/syslog/var/log/cron/var/log/maillog/var/log/messages/var/log/secure/var/log/spooler{ missingok sharedscripts postrotate /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true endscript}
- syslog文件会为cron,maillog,messages,secure,spooler这几个日志进行切割
- messages日志是由 syslogd 服务决定的,所以 kill -HUP 就会重新加载这个日志
- 还有一个脚本,shell命令行,在把日志切割后(挪走),改名字生成新的日志
- Linux系统有一个特点,一个服务写一个文件的时候,并不是按照文件名去写的,而是根据inode来写的
28.2 dmesg命令和dmesg日志
- dmesg命令,会把系统硬件相关的日志列出来;
[root@damozhiying ~]# dmesg |head -5 //页面有限,只列出5行[ 0.000000] Initializing cgroup subsys cpuset[ 0.000000] Initializing cgroup subsys cpu[ 0.000000] Initializing cgroup subsys cpuacct[ 0.000000] Linux version 3.10.0-693.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) ) #1 SMP Tue Aug 22 21:09:27 UTC 2017[ 0.000000] Command line: BOOT_IMAGE=/vmlinuz-3.10.0-693.el7.x86_64 root=UUID=b43ac3f1-3afe-4a10-b3b8-a9f0f498cdc0 ro crashkernel=auto rhgb quiet LANG=zh_CN.UTF-8
这个日志是保存在内存中的,并不是一个文件; 假如你的网卡有问题了,硬盘损坏了,都会记录在这个日志中
- dmesg -c 清空当前日志; 但是一重启这个系统,又会生成这些日志
[root@damozhiying ~]# dmesg -c //清除当前日志[root@damozhiying ~]# dmesg |head -5 //列出日志。结果没有,说明清除干净[root@damozhiying ~]#
- /var/log/dmesg日志文件
[root@damozhiying ~]# file /var/log/dmesg/var/log/dmesg: ASCII text //文本文件
**注意:**这个日志文件和 dmesg命令 没有任何关联;它是系统启动的一个日志,记录的信息。
28.3 last命令
last命令,查看你正确的登录历史
[root@damozhiying ~]# last |head -5root pts/0 192.168.112.1 Wed Jun 20 20:58 still logged in root pts/1 192.168.112.1 Wed Jun 20 08:40 still logged in root pts/0 192.168.112.1 Tue Jun 19 17:43 - 10:43 (16:59) root pts/1 192.168.112.1 Tue Jun 19 13:35 - 19:27 (05:51) root pts/0 192.168.112.1 Tue Jun 19 09:00 - 15:39 (06:39)
- 它调用的文件/var/log/wtmp。
- 里面记录是是谁,在哪里,来源IP,时间,登录的时长都会有记录
- /var/log/wtmp日志是一个二进制文件,不能直接cat查看的,只能用last命令去查看
28.4 lastb命令
lastb命令,查看登录失败的用户
[root@damozhiying ~]# lastb(unknown tty1 Fri Jun 8 18:02 - 18:02 (00:00) btmp begins Fri Jun 8 18:02:01 2018
- 对应的文件时/var/log/btmp 日志
- /var/log/btmp也是二进制文件,不能直接cat的
28.5 安全日志
/var/log/secure 比如登录操作系统,验证成功会在这里记录一个日志,失败也会去记录
[root@damozhiying ~]# cat /var/log/secure |head -5Jun 16 11:40:47 damozhiying polkitd[564]: Registered Authentication Agent for unix-process:3607:1280281 (system bus name :1.106 [/usr/bin/pkttyagent --notify-fd 5 --fallback], object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale zh_CN.UTF-8)Jun 16 08:57:12 damozhiying polkitd[576]: Loading rules from directory /etc/polkit-1/rules.dJun 16 08:57:12 damozhiying polkitd[576]: Loading rules from directory /usr/share/polkit-1/rules.dJun 16 08:57:12 damozhiying polkitd[576]: Finished loading, compiling and executing 2 rulesJun 16 08:57:12 damozhiying polkitd[576]: Acquired the name org.freedesktop.PolicyKit1 on the system bus
二十九 screen工具
有时候我们需要执行一个命令或脚本,需要几小时甚至几天,在这个过程中,如果中途断网或者出现有其他意外情况怎么办,当然也可以把命令或者脚本放到后台运行,不过不保险,无法在屏幕上随时查看,这就要用到虚拟终端screen。
- 单个screen,建立、退出
首先安装screen包
[root@damozhiying ~]# yum install -y screen已加载插件:fastestmirror
screen-ls查看已打开的screen会话
[root@damozhiying ~]# screen -lsThere is a screen on: 6183.pts-0.damozhiying (Attached)1 Socket in /var/run/screen/S-root.
ctrl+a,再按d,退出
[root@damozhiying ~]# screen [detached from 6202.pts-0.damozhiying]
退出后,如果想再次登入某个screen会话,可以使用的是screen -r [编号]
[root@damozhiying ~]# screen -r 6202[root@damozhiying ~]# screen -lsThere is a screen on: 6202.pts-0.damozhiying (Attached)1 Socket in /var/run/screen/S-root.[root@damozhiying ~]#
按exit,可以直接退出screen会话
[root@damozhiying ~]# screen -lsNo Sockets found in /var/run/screen/S-root.
- 多个screen会话, screen > Ctrl + a ,在按d ;依次创建N个;若想进入到其中一个,指定id即可
[root@damozhiying ~]# screen [detached from 6275.pts-0.damozhiying][root@damozhiying ~]# screen [detached from 6290.pts-0.damozhiying][root@damozhiying ~]# screen [detached from 6305.pts-0.damozhiying][root@damozhiying ~]# screen [detached from 6320.pts-0.damozhiying][root@damozhiying ~]# screen -lsThere are screens on: 6320.pts-0.damozhiying (Detached) 6305.pts-0.damozhiying (Detached) 6290.pts-0.damozhiying (Detached) 6275.pts-0.damozhiying (Detached)4 Sockets in /var/run/screen/S-root.
- 如果screen太多,却不知道其功能作用;需要命令和定义
[root@damozhiying ~]# screen -S "test_screen" //指定screen作业的名称
此时进入screen屏幕;
[root@damozhiying ~]# sleep 300
Ctrl + a ,在按d ;回到当前页面。
[root@damozhiying ~]# screen -S "test_screen"[detached from 6361.test_screen]
此时可以看到 test_screen 的ID。我们再列出所有的
[root@damozhiying ~]# screen -lsThere are screens on: 6361.test_screen (Detached) 6320.pts-0.damozhiying (Detached) 6305.pts-0.damozhiying (Detached) 6290.pts-0.damozhiying (Detached) 6275.pts-0.damozhiying (Detached)5 Sockets in /var/run/screen/S-root.