首页 文章 精选 留言 我的

精选列表

搜索[centos],共5643篇文章
优秀的个人博客,低调大师

CentOS7设置SWAP分区,小内存服务器的救世主

前言 Swap分区在系统的物理内存(这里应该是运行内存)不够用的时候,把物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap分区中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。 设置 1.添加SWAP分区 sh 复制代码 cd / && dd if=/dev/zero of=swapfile bs=1024 count=4194304 chmod 600 /swapfile && mkswap /swapfile swapon /swapfile && swapon -s echo "/swapfile swap swap defaults 0 0" >> /etc/fstab 注: count=4194304中4194304为交换分区大小 4194304=102410244大小为4G 交换区大小设置有个参考依据,物理内存小于4G则SWAP设置为物理内存的两倍、物理内存等于4G则SWAP设置为4G、物理内存大于4G则SWAP设置为物理内存的1/2。 2.重启系统 sh 复制代码 shutdown -r now 3.查看分区结果 sh 复制代码 free -m 4.关闭交换空间 sh 复制代码 cd / && swapoff swapfile && rm -rf swapfile

优秀的个人博客,低调大师

CentOS中top命令讲解

#top top命令的第一行“ top - 19:56:47 up 39 min, 3 users, load average: 0.00, 0.00, 0.00” 显示的内容依次为 “系统当前时间 、 系统到目前为止已运行的时间、 当前登录系统的用户数量、 系统负载(任务队列的平均长度)三个值分别为1分钟、5分钟、15分钟前到现在的平均值 【这三个一般会小于1,如果持续高于5,请仔细查看那个程序影响系统的运行】” 第二行: top命令的第二行“Tasks: 120 total, 2 running, 118 sleeping, 0 stopped, 0 zombie”显示的内容依次“所有启动的进程数”、“正在运行的进程数”、“挂起的进程数”、“停止的进程数”、“僵尸进程数”。 第三行 %Cpu(s): 3.9 us, 0.2 sy, 0.0 ni, 95.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st “用户空间占用CPU百分比”、 “内核空间占用CPU百分比”、 “用户空间内改变过优先级的进程占用CPU百分比”、 “空闲CPU百分比”、 “等待输入输出CPU时间百分比”、 “CPU服务于硬件中断所耗费的时间总额”、 “CPU服务软中断所耗费的时间总额”、 “Steal Time” KiB Mem : 65773176 total, 397796 free, 22194504 used, 43180876 buff/cache 显示内容依次为 “物理内存总量”、 “已使用的物理内存”、 “空闲物理内存”、 “内核缓存内存量”。 KiB Swap: 67108860 total, 67023940 free, 84920 used. 42695072 avail Mem 显示内容依次为 “交换区总量”、 “已使用交互区总量”、 “空闲交换区总量”、 “缓冲的交换区总量”。 PID USER PR NI VIRT RES SHR S %CPU % MEM TIME+ COMMAND 6274 neutron 20 0 1379496 1.025g 2216 R 89.7 1.6 782:46.98 neutron-server 7535 nova 20 0 457736 154324 2572 S 10.3 0.2 84:58.96 nova-api 显示内容依次为“进程ID”、“进程所有者”、“优先级”、“nice值,负值表示高优先级,正值表示低优先级”、“进程使用的虚拟内存总量”、“进程使用的、未被换出的物理内存大小”、“共享内存大小”、 “进程状态”、“上次更新到现在的CPU时间占用百分比”、“进程使用的物理内存百分比”、“进程使用CPU总时间”、“命令名、命令行”。

优秀的个人博客,低调大师

CentOS设置ssh密钥登录

一、生成密钥对(两种方式)并配置 方式1:使用ssh-keygen(1)生成并配置 (1)生成密钥对 [root@iZwz9catu2mrq92b07d1d0Z ~]# ssh-keygen -t rsa Generating public/private rsa key pair. //输入文件名称 Enter file in which to save the key (/root/.ssh/id_rsa): keys_root //输入私钥加密密码 Enter passphrase (empty for no passphrase): //再次输入密码 Enter same passphrase again: Your identification has been saved in keys_root. Your public key has been saved in keys_root.pub. The key fingerprint is: f4:f9:70:51:cf:09:f6:da:30:6a:b1:67:4f:dc:14:44 root@iZwz9catu2mrq92b07d1d0Z The key's randomart image is: +--[ RSA 2048]----+ | o+E | | ..ooo| | . ..o o+| | . . .+.*..| | S ++.+ +.| | .+o o | | . . | | | | | +-----------------+ //文件生成成功,keys_root为私钥,keys_root.pub为公钥 [root@iZwz9catu2mrq92b07d1d0Z ~]# ls keys_root keys_root.pub (2)配置公钥 //将生成的公钥写入到用户的authorized_keys [root@iZwz9catu2mrq92b07d1d0Z ~]# echo -e '#this is keys_root' >> ~/.ssh/authorized_keys ; cat ~/keys_root.pub >> ~/.ssh/authorized_keys [root@iZwz9catu2mrq92b07d1d0Z ~]# cat ~/.ssh/authorized_keys #this is keys_root ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAyhp9SBxas8Nmwdi4dQfOuUULpMGRnGEFopU2DXhSF+PE/s80xrVS31Ycd5o4gU3iehKx2vo4OEB2lYZ2JCfptTc59HAj+Qwqh7i5S4YQuX/+31GkY+s8XKFR4QgH1ubQt9feU2cagfG1f+wWRsa0YtefE67Kjv6OZuKuA2bOdrAH4mzV1m71iLMUZYgaEnfJExXj2lbPAXRqCV+tdIj9h0jxhB5pQXsZ3NE38D22WYNKO4Sy8odfE7Oby1I0Emm8Uhiwqgx91HP22iY/WqzZOxeKZPF17CPWr9cChaPh9/DXM1Wd8KDCg33MO6hbpqAwh7iEughndXly0FY0oZNKnQ== root@iZwz9catu2mrq92b07d1d0Z (3)配置私钥 下载私钥到本地机器 [root@iZwz9catu2mrq92b07d1d0Z ~]# sz keys_root 启动Xshell 工具(Tools) 用户密钥管理者(User Key Manager) 导入已下载的 keys_root 文件(Import) 配置完成 方式2:使用Xshell生成并配置 启动Xshell 工具 新建用户密钥生成向导(New User Key Wizard) 按步骤选择下一步 输入密钥名称和私钥密码后选择下一步 密钥对生成成功,此时私钥已自动导入到Xshell中,需要我们手动保存公钥到本地机器 上传已保存的公钥文件到服务器并配置在用户的authorized_keys文件中 二、通过密钥登录服务器 新建会话,填写名称、主机等信息 选择左侧栏目用户身份验证,右侧方法选择Public Key,填写用户名,选择对应的用户密钥并填写密钥的密码,点击确定 连接会话 附录 [root@iZwz9catu2mrq92b07d1d0Z ~]# man ssh 1.ssh-keygen命令介绍 The user creates his/her key pair by running ssh-keygen(1). This stores the private key in ~/.ssh/identity (protocol 1), ~/.ssh/id_dsa (protocol 2 DSA), ~/.ssh/id_ecdsa (protocol 2 ECDSA), or ~/.ssh/id_rsa (protocol 2 RSA) and stores the public key in ~/.ssh/identity.pub (protocol 1), ~/.ssh/id_dsa.pub (protocol 2 DSA), ~/.ssh/id_ecdsa.pub (protocol 2 ECDSA), or ~/.ssh/id_rsa.pub (protocol 2 RSA) in the user’s home directory. The user should then copy the public key to ~/.ssh/authorized_keys in his/her home directoryon the remote machine. The authorized_keys file corresponds to the conventional ~/.rhosts file, and has one key per line, though the lines can be very long. After this, the user can log in without giving the password. 注:每个用户都拥有自己的authorized_keys 2.authorized_keys文件介绍 ~/.ssh/authorized_keys Lists the public keys (RSA/ECDSA/DSA) that can be used for logging in as this user. The format of this file is described in the sshd(8) manual page. This file is not highly sensitive, but the recommended permissions are read/writefor the user, and not accessible by others. 注:建议文件权限对拥有者为读写权限,其他用户无权限

优秀的个人博客,低调大师

CentOS shell 压缩解压命令

.tar 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) ——————————————— .gz 解压1:gunzip FileName.gz 解压2:gzip -d FileName.gz 压缩:gzip FileName .tar.gz 和 .tgz 解压:tar zxvf FileName.tar.gz 压缩:tar zcvf FileName.tar.gz DirName ——————————————— .bz2 解压1:bzip2 -d FileName.bz2 解压2:bunzip2 FileName.bz2 压缩: bzip2 -z FileName .tar.bz2 解压:tar jxvf FileName.tar.bz2 压缩:tar jcvf FileName.tar.bz2 DirName ——————————————— .bz 解压1:bzip2 -d FileName.bz 解压2:bunzip2 FileName.bz 压缩:未知 .tar.bz 解压:tar jxvf FileName.tar.bz 压缩:未知 ——————————————— .Z 解压:uncompress FileName.Z 压缩:compress FileName .tar.Z 解压:tar Zxvf FileName.tar.Z 压缩:tar Zcvf FileName.tar.Z DirName ——————————————— .zip 解压:unzip FileName.zip 压缩:zip FileName.zip DirName ——————————————— .rar 解压:rar x FileName.rar 压缩:rar a FileName.rar DirName ——————————————— .lha 解压:lha -e FileName.lha 压缩:lha -a FileName.lha FileName ——————————————— .rpm 解包:rpm2cpio FileName.rpm | cpio -div ——————————————— .deb 解包:ar p FileName.deb data.tar.gz | tar zxf - ——————————————— .tar .tgz .tar.gz .tar.Z .tar.bz .tar.bz2 .zip .cpio .rpm .deb .slp .arj .rar .ace .lha .lzh .lzx .lzs .arc .sda .sfx .lnx .zoo .cab .kar .cpt .pit .sit .sea 解压:sEx x FileName.* 压缩:sEx a FileName.* FileName sEx只是调用相关程序,本身并无压缩、解压功能,请注意! gzip 命令 减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。gzip 是在 Linux 系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。 语法:gzip [选项] 压缩(解压缩)的文件名该命令的各选项含义如下: -c 将输出写到标准输出上,并保留原有文件。 -d 将压缩文件解压。 -l 对每个压缩文件,显示下列字段: 压缩文件的大小;未压缩文件的大小;压缩比;未压缩文件的名字 -r 递归式地查找指定目录并压缩其中的所有文件或者是解压缩。 -t 测试,检查压缩文件是否完整。 -v 对每一个压缩和解压的文件,显示文件名和压缩比。 -num 用指定的数字 num 调整压缩的速度, -1 或 --fast 表示最快压缩方法(低压缩比),-9 或--best表示最慢压缩方法(高压缩比)。系统缺省值为 6。指令实例: gzip *% 把当前目录下的每个文件压缩成 .gz 文件。 gzip -dv *% 把当前目录下每个压缩的文件解压,并列出详细的信息。 gzip -l *% 详细显示例1中每个压缩的文件的信息,并不解压。 gzip usr.tar% 压缩 tar 备份文件 usr.tar,此时压缩文件的扩展名为.tar.gz。

优秀的个人博客,低调大师

CentOS中常用操作命令

常用指令 ls 显示文件或目录 -l 列出文件详细信息l(list) -a 列出当前目录下所有文件及目录,包括隐藏的a(all) mkdir 创建目录 -p 创建目录,若无父目录,则创建p(parent) cd 切换目录 touch 创建空文件 echo 创建带有内容的文件。 cat 查看文件内容 cp 拷贝 mv 移动或重命名 rm 删除文件 -r 递归删除,可删除子目录及文件 -f 强制删除 find 在文件系统中搜索某文件 wc 统计文本中行数、字数、字符数 grep 在文本文件中查找某个字符串 rmdir 删除空目录 tree 树形结构显示目录,需要安装tree包 pwd 显示当前目录 ln 创建链接文件 more、less 分页显示文本文件内容 head、tail 显示文件头、尾内容 ctrl+alt+F1 命令行全屏模式 系统管理命令 stat 显示指定文件的详细信息,比ls更详细 who 显示在线登陆用户 whoami 显示当前操作用户 hostname 显示主机名 uname 显示系统信息 top 动态显示当前耗费资源最多进程信息 ps 显示瞬间进程状态 ps -aux du 查看目录大小 du -h /home带有单位显示目录信息 df 查看磁盘大小 df -h 带有单位显示磁盘信息 ifconfig 查看网络情况 ping 测试网络连通 netstat 显示网络状态信息 man 命令不会用了,找男人 如:man ls clear 清屏 alias 对命令重命名 如:alias showmeit="ps -aux" ,另外解除使用unaliax showmeit kill 杀死进程,可以先用ps 或 top命令查看进程的id,然后再用kill命令杀死进程。 打包压缩相关命令 gzip: bzip2: tar: 打包压缩 -c 归档文件 -x 压缩文件 -z gzip压缩文件 -j bzip2压缩文件 -v 显示压缩或解压缩过程 v(view) -f 使用档名 例: tar -cvf /home/abc.tar /home/abc 只打包,不压缩 tar -zcvf /home/abc.tar.gz /home/abc 打包,并用gzip压缩 tar -jcvf /home/abc.tar.bz2 /home/abc 打包,并用bzip2压缩 当然,如果想解压缩,就直接替换上面的命令 tar -cvf / tar -zcvf / tar -jcvf 中的“c” 换成“x” 就可以了。 关机/重启机器 shutdown -r 关机重启 -h 关机不重启 now 立刻关机 halt 关机 reboot 重启 Linux管道 将一个命令的标准输出作为另一个命令的标准输入。也就是把几个命令组合起来使用,后一个命令除以前一个命令的结果。 例:grep -r "close" /home/* | more 在home目录下所有文件中查找,包括close的文件,并分页输出。 Linux软件包管理 dpkg(Debian Package)管理工具,软件包名以.deb后缀。这种方法适合系统不能联网的情况下。 比如安装tree命令的安装包,先将tree.deb传到Linux系统中。再使用如下命令安装。 sudo dpkg -i tree_1.5.3-1_i386.deb 安装软件 sudo dpkg -r tree 卸载软件 注:将tree.deb传到Linux系统中,有多种方式。VMwareTool,使用挂载方式;使用winSCP工具等; APT(Advanced Packaging Tool)高级软件工具。这种方法适合系统能够连接互联网的情况。 依然以tree为例 sudo apt-get install tree 安装tree sudo apt-get remove tree 卸载tree sudo apt-get update 更新软件 sudo apt-get upgrade 将.rpm文件转为.deb文件 .rpm为RedHat使用的软件格式。在Ubuntu下不能直接使用,所以需要转换一下。 sudo alien abc.rpm vim使用 vim三种模式:命令模式、插入模式、编辑模式。使用ESC或i或:来切换模式。 命令模式下: :q 退出 :q! 强制退出 :wq 保存并退出 :set number 显示行号 :set nonumber 隐藏行号 /apache 在文档中查找apache 按n跳到下一个,shift+n上一个 yyp 复制光标所在行,并粘贴 h(左移一个字符←)、j(下一行↓)、k(上一行↑)、l(右移一个字符→) 用户及用户组管理 /etc/passwd 存储用户账号 /etc/group 存储组账号 /etc/shadow 存储用户账号的密码 /etc/gshadow 存储用户组账号的密码 useradd 用户名 userdel 用户名 adduser 用户名 groupadd 组名 groupdel 组名 passwd root 给root设置密码 su root su - root /etc/profile 系统环境变量 bash_profile 用户环境变量 .bashrc 用户环境变量 su user 切换用户,加载配置文件.bashrc su - user 切换用户,加载配置文件/etc/profile ,加载bash_profile 更改文件的用户及用户组 sudo chown [-R] owner[:group] {File|Directory} 例如:还以jdk-7u21-linux-i586.tar.gz为例。属于用户hadoop,组hadoop 要想切换此文件所属的用户及组。可以使用命令。 sudo chown root:rootjdk-7u21-linux-i586.tar.gz 文件权限管理 三种基本权限 R 读 数值表示为4 W 写 数值表示为2 X 可执行 数值表示为1 如图所示,jdk-7u21-linux-i586.tar.gz文件的权限为-rw-rw-r-- -rw-rw-r--一共十个字符,分成四段。 第一个字符“-”表示普通文件;这个位置还可能会出现“l”链接;“d”表示目录 第二三四个字符“rw-”表示当前所属用户的权限。 所以用数值表示为4+2=6 第五六七个字符“rw-”表示当前所属组的权限。 所以用数值表示为4+2=6 第八九十个字符“r--”表示其他用户权限。 所以用数值表示为2 所以操作此文件的权限用数值表示为662 更改权限 sudo chmod [u所属用户 g所属组 o其他用户 a所有用户] [+增加权限 -减少权限] [r w x] 目录名 例如:有一个文件filename,权限为“-rw-r----x” ,将权限值改为"-rwxrw-r-x",用数值表示为765 sudo chmod u+x g+w o+r filename 上面的例子可以用数值表示 sudo chmod 765 filename

优秀的个人博客,低调大师

安装CentOS7(文)

步骤: “虚拟机设置”》“cd/dvd“的选择“使用ios映像” 开启虚拟机。 选择第一项安装。 选择语言下拉“中文”“简体中文”,继续 系统选择安装位置、其他存储选项分区,选择“我要配置分区”完成。 下拉列表中选择“标准分区”,在选择“+”》挂载点“boot”容量“200M”、“swap”“内存的2倍(大于等于4G,分8G就可以)”其他的分根分区。完成》 接受改变。 开始安装。设置用户密码(弱密码两下回车) 本文转自 虾米的春天 51CTO博客,原文链接:http://blog.51cto.com/lsxme/1972627,如需转载请自行联系原作者

优秀的个人博客,低调大师

CentOS下的screen工具

一、背景 系统管理员经常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,比如系统备份、ftp 传输等等。通常情况下我们都是为每一个这样的任务开一个远程终端窗口,因为它们执行的时间太长了。必须等待它们执行完毕,在此期间不能关掉窗口或者断开连接,否则这个任务就会被杀掉,一切半途而废了。 二、简介 GNU Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。 GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。 会话恢复 只要Screen本身没有终止,在其内部运行的会话都可以恢复。这一点对于远程登录的用户特别有用——即使网络连接中断,用户也不会失去对已经打开的命令行会话的控制。只要再次登录到主机上执行 screen -r就可以恢复会话的运行。同样在暂时离开的时候,也可以执行分离命令 detach,在保证里面的程序正常运行的情况下让Screen挂起(切换到后台)。这一点和图形界面下的VNC很相似。 多窗口 在Screen环境下,所有的会话都独立的运行,并拥有各自的编号、输入、输出和窗口缓存。用户可以通过快捷键在不同的窗口下切换,并可以自由的重定向各个窗口的输入和输出。Screen实现了基本的文本操作,如复制粘贴等;还提供了类似滚动条的功能,可以查看窗口状况的历史记录。窗口还可以被分区和命名,还可以监视后台窗口的活动。 会话共享 Screen可以让一个或多个用户从不同终端多次登录一个会话,并共享会话的所有特性(比如可以看到完全相同的输出)。它同时提供了窗口访问权限的机制,可以对窗口进行密码保护。 GNU's Screen 官方站点:http://www.gnu.org/software/screen/ 三、语法 # screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s ][-S <作业名称>] 参数说明 -A 将所有的视窗都调整为目前终端机的大小。 -d <作业名称> 将指定的screen作业离线。 -h <行数> 指定视窗的缓冲区行数。 -m 即使目前已在作业中的screen作业,仍强制建立新的screen作业。 -r <作业名称> 恢复离线的screen作业。 -R 先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。 -s 指定建立新视窗时,所要执行的shell。 -S <作业名称> 指定screen作业的名称。 -v 显示版本信息。 -x 恢复之前离线的screen作业。 -ls或--list 显示目前所有的screen作业。 -wipe 检查目前所有的screen作业,并删除已经无法使用的screen作业。 四、常用screen参数 screen -S yourname -> 新建一个叫yourname的session screen -ls -> 列出当前所有的session screen -r yourname -> 回到yourname这个session screen -d yourname -> 远程detach某个session screen -d -r yourname -> 结束当前session并回到yourname这个session 在每个screen session 下,所有命令都以 ctrl+a(C-a) 开始。 C-a ? ->显示所有键绑定信息 C-a c ->创建一个新的运行shell的窗口并切换到该窗口 C-a n -> Next,切换到下一个 window C-a p -> Previous,切换到前一个 window C-a 0..9 -> 切换到第 0..9 个 window Ctrl+a [Space] -> 由视窗0循序切换到视窗9 C-a C-a -> 在两个最近使用的 window 间切换 C-a x -> 锁住当前的 window,需用用户密码解锁 C-a d -> detach,暂时离开当前session,将目前的 screen session (可能含有多个 windows) 丢到后台执行,并会回到还没进 screen 时的状态,此时在 screen session 里,每个 window 内运行的 process (无论是前台/后台)都在继续执行,即使 logout 也不影响。 C-a z -> 把当前session放到后台执行,用 shell 的 fg 命令则可回去。 C-a w ->显示所有窗口列表 C-a t -> Time,显示当前时间,和系统的 load C-a k -> kill window,强行关闭当前的 window C-a [ -> 进入 copy mode,在 copy mode 下可以回滚、搜索、复制就像用使用 vi 一样 C-b Backward,PageUp C-f Forward,PageDown H(大写) High,将光标移至左上角 L Low,将光标移至左下角 0 移到行首 $ 行末 w forward one word,以字为单位往前移 b backward one word,以字为单位往后移 Space 第一次按为标记区起点,第二次按为终点 Esc 结束 copy mode C-a ] -> Paste,把刚刚在 copy mode 选定的内容贴上 五、使用 screen 5.1 安装screen 流行的Linux发行版(例如Red Hat Enterprise Linux)通常会自带screen实用程序,如果没有的话,可以从GNU screen的官方网站下载。 [root@TS-DEV ~]# yum install screen [root@TS-DEV ~]# rpm -qa|grep screen screen-4.0.3-4.el5 [root@TS-DEV ~]# 5.2创建一个新的窗口 安装完成后,直接敲命令screen就可以启动它。但是这样启动的screen会话没有名字,实践上推荐为每个screen会话取一个名字,方便分辨: [root@TS-DEV ~]# screen-S david screen启动后,会创建第一个窗口,也就是窗口No. 0,并在其中打开一个系统默认的shell,一般都会是bash。所以你敲入命令screen之后,会立刻又返回到命令提示符,仿佛什么也没有发生似的,其实你已经进入Screen的世界了。当然,也可以在screen命令之后加入你喜欢的参数,使之直接打开你指定的程序,例如: [root@TS-DEV ~]# screen vi david.txt screen创建一个执行vi david.txt的单窗口会话,退出vi 将退出该窗口/会话。 5.3 查看窗口和窗口名称 打开多个窗口后,可以使用快捷键C-a w列出当前所有窗口。如果使用文本终端,这个列表会列在屏幕左下角,如果使用X环境下的终端模拟器,这个列表会列在标题栏里。窗口列表的样子一般是这样: 0$ bash 1-$ bash 2*$ bash 这个例子中我开启了三个窗口,其中*号表示当前位于窗口2,-号表示上一次切换窗口时位于窗口1。 Screen默认会为窗口命名为编号和窗口中运行程序名的组合,上面的例子中窗口都是默认名字。练习了上面查看窗口的方法,你可能就希望各个窗口可以有不同的名字以方便区分了。可以使用快捷键C-a A来为当前窗口重命名,按下快捷键后,Screen会允许你为当前窗口输入新的名字,回车确认。 5.4 会话分离与恢复 你可以不中断screen窗口中程序的运行而暂时断开(detach)screen会话,并在随后时间重新连接(attach)该会话,重新控制各窗口中运行的程序。例如,我们打开一个screen窗口编辑/tmp/david.txt文件: [root@TS-DEV ~]# screen vi /tmp/david.txt 之后我们想暂时退出做点别的事情,比如出去散散步,那么在screen窗口键入C-a d,Screen会给出detached提示: 暂时中断会话 半个小时之后回来了,找到该screen会话: [root@TS-DEV ~]# screen -ls 重新连接会话: [root@TS-DEV ~]# screen -r 12865 一切都在。 当然,如果你在另一台机器上没有分离一个Screen会话,就无从恢复会话了。 这时可以使用下面命令强制将这个会话从它所在的终端分离,转移到新的终端上来: 5.5 清除dead 会话 如果由于某种原因其中一个会话死掉了(例如人为杀掉该会话),这时screen -list会显示该会话为dead状态。使用screen -wipe命令清除该会话: 5.6 关闭或杀死窗口 正常情况下,当你退出一个窗口中最后一个程序(通常是bash)后,这个窗口就关闭了。另一个关闭窗口的方法是使用C-a k,这个快捷键杀死当前的窗口,同时也将杀死这个窗口中正在运行的进程。 如果一个Screen会话中最后一个窗口被关闭了,那么整个Screen会话也就退出了,screen进程会被终止。 除了依次退出/杀死当前Screen会话中所有窗口这种方法之外,还可以使用快捷键C-a :,然后输入quit命令退出Screen会话。需要注意的是,这样退出会杀死所有窗口并退出其中运行的所有程序。其实C-a :这个快捷键允许用户直接输入的命令有很多,包括分屏可以输入split等,这也是实现Screen功能的一个途径,不过个人认为还是快捷键比较方便些。 六、screen 高级应用 6.1 会话共享 还有一种比较好玩的会话恢复,可以实现会话共享。假设你在和朋友在不同地点以相同用户登录一台机器,然后你创建一个screen会话,你朋友可以在他的终端上命令: [root@TS-DEV ~]# screen -x 这个命令会将你朋友的终端Attach到你的Screen会话上,并且你的终端不会被Detach。这样你就可以和朋友共享同一个会话了,如果你们当前又处于同一个窗口,那就相当于坐在同一个显示器前面,你的操作会同步演示给你朋友,你朋友的操作也会同步演示给你。当然,如果你们切换到这个会话的不同窗口中去,那还是可以分别进行不同的操作的。 6.2 会话锁定与解锁 Screen允许使用快捷键C-a s锁定会话。锁定以后,再进行任何输入屏幕都不会再有反应了。但是要注意虽然屏幕上看不到反应,但你的输入都会被Screen中的进程接收到。快捷键C-a q可以解锁一个会话。 也可以使用C-a x锁定会话,不同的是这样锁定之后,会话会被Screen所属用户的密码保护,需要输入密码才能继续访问这个会话。 6.3 发送命令到screen会话 在Screen会话之外,可以通过screen命令操作一个Screen会话,这也为使用Screen作为脚本程序增加了便利。关于Screen在脚本中的应用超出了入门的范围,这里只看一个例子,体会一下在会话之外对Screen的操作: [root@TS-DEV ~]# screen -S sandy -X screen ping www.baidu.com 这个命令在一个叫做sandy的screen会话中创建一个新窗口,并在其中运行ping命令。 6.4 屏幕分割 现在显示器那么大,将一个屏幕分割成不同区域显示不同的Screen窗口显然是个很酷的事情。可以使用快捷键C-a S将显示器水平分割,Screen 4.00.03版本以后,也支持垂直分屏,快捷键是C-a |。分屏以后,可以使用C-a <tab>在各个区块间切换,每一区块上都可以创建窗口并在其中运行进程。 可以用C-a X快捷键关闭当前焦点所在的屏幕区块,也可以用C-a Q关闭除当前区块之外其他的所有区块。关闭的区块中的窗口并不会关闭,还可以通过窗口切换找到它。 6.5C/P模式和操作 screen的另一个很强大的功能就是可以在不同窗口之间进行复制粘贴了。使用快捷键C-a <Esc>或者C-a [可以进入copy/paste模式,这个模式下可以像在vi中一样移动光标,并可以使用空格键设置标记。其实在这个模式下有很多类似vi的操作,譬如使用/进行搜索,使用y快速标记一行,使用w快速标记一个单词等。关于C/P模式下的高级操作,其文档的这一部分有比较详细的说明。 一般情况下,可以移动光标到指定位置,按下空格设置一个开头标记,然后移动光标到结尾位置,按下空格设置第二个标记,同时会将两个标记之间的部分储存在copy/paste buffer中,并退出copy/paste模式。在正常模式下,可以使用快捷键C-a ]将储存在buffer中的内容粘贴到当前窗口。 6.6 更多screen功能 同大多数UNIX程序一样,GNUScreen提供了丰富强大的定制功能。你可以在Screen的默认两级配置文件/etc/screenrc和$HOME/.screenrc中指定更多,例如设定screen选项,定制绑定键,设定screen会话自启动窗口,启用多用户模式,定制用户访问权限控制等等。如果你愿意的话,也可以自己指定screen配置文件。 以多用户功能为例,screen默认是以单用户模式运行的,你需要在配置文件中指定multiuser on 来打开多用户模式,通过acl*(acladd,acldel,aclchg...)命令,你可以灵活配置其他用户访问你的screen会话。更多配置文件内容请参考screen的man页。

优秀的个人博客,低调大师

CentOS字符截取命令-cut

概述 cut是一个选取命令,。一般来说,选取信息通常是针对“行”来进行分析的,并不是整篇信息分析的。 语法 cut [-bn] [file] 1 或 cut [-c] [file] 1 或 cut [-df] [file] 1 cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。 如果不指定 File 参数,cut 命令将读取标准输入。 必须指定 -b、-c 或 -f 标志之一。 cut 默认以制表符为分隔符 参数说明 -b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。 -c :以字符为单位进行分割。 -d :自定义分隔符,默认为制表符。 -f :与-d一起使用,指定显示哪个区域。 -n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的<br />范围之内,该字符将被写出;否则,该字符将被排除。 cut命令主要是接受三个定位方法: 第一,字节(bytes),用选项-b 第二,字符(characters),用选项-c 第三,域(fields),用选项-f cut -b [root@entel2 ~]# who root tty1 2016-08-22 06:47 (:0) root pts/2 2016-09-20 18:18 (10.45.35.59) root pts/0 2016-09-20 14:25 (10.45.22.82) 1 2 3 4 以下的cut截取都以上数据为准 提取每一行的第3个字节 [root@entel2 ~]# who | cut -b 4 t t t 1 2 3 4 提取第1,第2、第3个字节 [root@entel2 ~]# who|cut -b 1-3 roo roo roo [root@entel2 ~]# who|cut -b 1,2,3 roo roo roo 1 2 3 4 5 6 7 8 9 -b支持形如1-3的写法,而且多个定位之间用逗号隔开就可以了。 注意: cut命令如果使用了-b选项,那么执行此命令时,cut会先把-b后面所有的定位进行从小到大排序,然后再提取。不能颠倒定位的顺序。 其他: -3表示从第一个字节到第三个字节, 而3-表示从第三个字节到行尾。如果你细心,你可以看到这两种情况下,都包括了第三个字节 如果执行who|cut -b -3,3-,你觉得会如何呢?答案是输出整行,不会出现连续两个重叠的第三个字节的 cut -b [root@entel2 ~]# who|cut -c 1-3 roo roo roo 1 2 3 4 额 看着怎么和-b没有什么区别啊?莫非-b和-c作用一样? 其实不然,看似相同,只是因为这个例子举的不好,who输出的都是单字节字符,所以用-b和-c没有区别,如果提取中文,区别就看出来了来。 汉字本身是双字节的,cut –c把汉字“小”当成一个字符来处理,而cut –b是以字节来处理,把“小”拆成了两个字节,结果是字符被“切成两半”,因此无法正常显示。 栗子 [root@entel2 ~]# cat cut.txt 周杰伦 邓紫棋 薛之谦 李荣浩 小工匠 1 2 3 4 5 6 see ,出问题了吧 [root@entel2 ~]# cat cut.txt | cut -b 3 ¨ [root@entel2 ~]# [root@entel2 ~]# cut -b 3 cut.txt ¨ [root@entel2 ~]# 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 换成 -c 来试试吧 [root@entel2 ~]# cut -c 3 cut.txt 伦 棋 谦 浩 匠 1 2 3 4 5 6 总结: -c则会以字符为单位,输出正常;而-b只会傻傻的以字节(8位二进制位)来计算,输出就是乱码。 提高: 当遇到多字节字符时,可以使用-n选项,-n用于告诉cut不要将多字节字符拆开。 [root@entel2 ~]# cat cut.txt |cut -b 2 ° [root@entel2 ~]# cat cut.txt |cut -nb 2 [root@entel2 ~]# cat cut.txt |cut -nb 1,2,3 周 邓 薛 李 小 [root@entel2 ~]# 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 cut -f 为什么会有“域”的提取呢,因为刚才提到的-b和-c只能在固定格式的文档中提取信息,而对于非固定格式的信息则束手无策。 这时候“域”就派上用场了。如果你观察过/etc/passwd文件,你会发现,它并不像who的输出信息那样具有固定格式,而是比较零散的排放。 但是,冒号在这个文件的每一行中都起到了非常重要的作用,冒号用来隔开每一个项。 我们很幸运,cut命令提供了这样的提取方式,具体的说就是设置“间隔符”,再设置“提取第几个域”,就OK了! 栗子 数据:以/etc/passwd的前五行内容为例: [root@entel2 ~]# head -n 5 /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 1 2 3 4 5 6 提取用户名 [root@entel2 ~]# head -n 5 /etc/passwd|cut -d : -f 1 root bin daemon adm lp [root@entel2 ~]# 1 2 3 4 5 6 7 用-d来设置间隔符为冒号,然后用-f来设置我要取的是第一个域。 当然,在设定-f时,也可以使用例如3-5或者4-类似的格式: [root@entel2 ~]# cat /etc/passwd | head -n 5 | cut -d : -f 1,3-5 root:0:0:root bin:1:1:bin daemon:2:2:daemon adm:3:4:adm lp:4:7:lp 1 2 3 4 5 6 包含 3 和5 说在的field 。 遇到空格和制表符时,怎么分辨 tab制表符 直接 按 tab键即可打出 [root@entel2 ~]# sed -n l tablespace.txt this is tab\tfinish.$ this is serveral space finish.$ 1 2 3 如果是制表符(TAB),那么会显示为\t符号,如果是空格,就会原样显示。 通过此方法即可以判断制表符和空格了。 上面sed -n后面的字符是L的小写字母,看清楚了撒 在cut -d中用什么符号来设定制表符或空格 cut的-d选项的默认间隔符就是制表符,所以当你就是要使用制表符的时候,完全就可以省略-d选项,而直接用-f来取域就可以了。 如果你设定一个空格为间隔符,那么就这样: [root@entel2 ~]# cat tabspace.txt | cut -d ' ' -f 1 this this [root@entel2 ~]# 1 2 3 4 两个单引号之间必须要有一个空格,否则就输出全部内容了 而且,你只能在-d后面设置一个空格,可不许设置多个空格,因为cut只允许间隔符是一个字符。 多个空格报错如下… [root@entel2 ~]# cat tabspace.txt | cut -d ' ' -f 1 cut: the delimiter must be a single character Try `cut --help' for more information. You have new mail in /var/spool/mail/root 1 2 3 4 cut的缺陷和不足 处理多空格….. 如果文件里面的某些域是由若干个空格来间隔的,那么用cut就有点麻烦了,因为cut只擅长处理“以一个字符间隔”的文本内容

优秀的个人博客,低调大师

CentOS7安装OpenFire

下载openfire wget http://download.igniterealtime.org/openfire/openfire-3.9.3-1.i386.rpm安装openfire yum install -y /home/openfire-3.9.3-1.i386.rpm安装运行库 yum install -y glibc.i686添加开启启动 chkconfig openfire on启动openfire服务 systemctlstart openfire.service防火墙 IPtables添加端口 -A INPUT -p tcp -m state --state NEW -m tcp --dport 5222 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 5223 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 9091 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 9090 -j ACCEPT重启防火墙iptables服务 systemctl start iptables 注意: 我在阿里云服务器上安装后,用Spark客户端连接总是提示用户名或密码错误,最后的解决办法是: 1,OpenFire管理页面里,“服务器设置”->“服务器名称”和“系统属性”->“xmpp.domain”都要改成本服务器hostname。 2,Spark客户端在连接时,首页的“服务器”填写的也是服务器的hostname,点“高级”后里边的主机写服务器IP或域名都可以,端口写5222。 本文转自 zl1030 51CTO博客,原文链接:http://blog.51cto.com/zl1030/1846442

优秀的个人博客,低调大师

CentOS6.5安装openfire

一:安装openfire 1、安装系统中缺少的JAVA插件 #yum -y install java* wget* 2、配置java环境#vi /etc/profile在文件末尾添加内容如下:export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.91.x86_64 export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin :qw!保存退出#source /etc/profile 3、查看版本 #java -version 4、下载安装openfire#wgethttp://www.igniterealtime.org/downloadServlet?filename=openfire/openfire-4.0.0-1.i386.rpm #rpm -ivh openfire-3.6.2-1.i386.rpm 5、启动openfire#service openfire start 6、开放防火墙9090端口 #/sbin/iptables -I INPUT -p tcp --dport 9090 -j ACCEPT #/etc/rc.d/init.d/iptables save #/etc/init.d/iptables restart 下面你就可以使用http://ip:9090/,来访问你的openfire了。 二:配置Mysql 1、安装好mysql5.6.22,编辑mysql配置文件,添加下面两句设置默认编码为utf8 #vi /etc/my.cnf [mysqld] init_connect='SET NAMES utf8' character-set-server=utf8 [client] default-character-set=utf8 2、重启数据库 /etc/init.d/mysqld restart 3、进入数据库 #mysql -u 用户 -p密码 使用以下命令查看默认字符集,可以看到已经是utf8 mysql>show variables like 'character_set_%'; mysql>create database openfire; mysql>use openfire; 创建管理员账户 mysql>grant all privileges on openfire.* to admin@"%" identified by 'admin'; mysql>flush privileges; 导入sql文件 mysql>source /opt/openfire/resources/database/openfire_mysql.sql; mysql>quit 三:配置openfire 访问openfire,http://192.168.0.112:9090/ 选择简体中文 选择继续 选择标准数据库 选择mysql数据库,输入相关数据。 特别注意数据库URL,需要写错了。 选择初始配置 输入相关信息 安装完成,点击进入 用户名是admin,密码是新设置的密码 登录界面如下 四:客户端配置 1、在客户端运行安装程序spark_2_7_0.exe,登录用户admin 软件地址:http://www.igniterealtime.org/downloadServlet?filename=spark/spark_2_7_5.exe 状态如下 之后可以在服务器上面添加用户,客户端登录账户就可以了! 2、如果不想安装客户端,可以安装网页版的客户端 # wget http://www.igniterealtime.org/downloads/download-landing.jsp?file=sparkweb/sparkweb_0_9_0.tar.gz # tar zxvfsparkweb_0_9_0.tar.gz #mv sparkweb /usr/local/nginx/html/ 用Nginx发布 #cd /usr/local/nginx/conf/vhosts/ #vi sparkweb.conf 添加以下主机信息: server { listen 81; server_namelocalhost; root html/sparkweb; index SparkWeb.html index.html index.htm; } 重启Nginx # service nginx restart 访问网页http://localhost:81/,输入用户名,服务器IP地址,密码,点击Login 可以搜索用户 选择用户,添加用户 发个离线消息 test1用户登录,就看到消息了。 本文参考:http://www.centoscn.com/image-text/install/2015/0611/5638.html 本文转自奔跑在路上博客51CTO博客,原文链接http://blog.51cto.com/qiangsh/1735249如需转载请自行联系原作者 qianghong000

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册