Linux文件编辑器vim、输出输入重定向以及进程

之前在上linux课的时候,老师说,vim使用的好的网络管理员比普通的效率快好多。合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。撸基础吧。


linux编辑工具

VI

VIM

EMACS

 

vim 是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。vim的这些优势主要体现在以下几个方面:

易用性 vi只能运行于unix中,而vim不仅可以运行于unix,windows ,mac等多操作平台。

语法加亮 vim可以用不同的颜色来加亮你的代码。

可视化操作(ESC+V) 就是说vim不仅可以在终端运行,也可以运行于x window、mac os、windows。

vi的完全兼容 某些情况下,你可以把vim当成vi来使用

 

 

vim  文件名

如果文件已存在,则此文件被打开且显示文件内容 

如果文件不存在,则vim在第一次存盘时自动建立在硬盘上

 

 

vim的三种模式

命令模式:控制光标移动,删除字符,段落复制(ESC) 
编辑模式/插入模式:新增文字及修改文字 

末行模式:保存文件,离开vi,以及其他设置

 

vim的基本使用

插入、定位、删除、复制、剪切、替换、取消、搜索、保存、退出


 

定位命令

0           数字0,将光标移动到该行的行首

$           将光标移动到该行的行末

H           将光标移动到该屏幕的顶端

M           将光标移动到该屏幕的中间

L           将光标移动到该屏幕的底端

gg          将光标移动到文章的首行

         将光标移动到文章的尾行

wW         将光标移动到下一单词

 

在命令模式下可以直接删除字符

在命令模式下键入v则进入块操作:

1、移动光标以选定操作块

2c 剪切选定块    y 复制选定块

3p 将选定内容贴在光标所在位置右手边


vim中删除

x/<del>:删除一个字符

nx:删除下n个字符

dd:删除当前行

dw:删至词尾

ndw:删除后n个词

d$:删至行尾

nd$:删除后n



vim中剪贴

yy:选定光标所在行复制

yw:选定光标所在词复制

nyw:选定光标所在位置到之后n个单词复制

y$:选定光标所在位置到行尾的部分复制

p:贴在光标所在位置之右

P:贴在光标所在位置之左

命令模式,取消操作

u:取消上一个更动

U:取消一行内的所有更动

:e! :放弃所有更动,重新编辑

 

 

 

VIM编辑模式

i光标当前处插入

I光标当前行首插入

a光标之后插入

A光标所在行的行尾插入

o光标所在行之后新起一行插入

O光标所在行之前新起一行插入

 

 

 

末行模式在命令模式下输入“:”进入末行模式

:w [文件名] 保存当前文件

:q  如果未对文件做改动则退出

:wq :x  保存当前文件并退出

:q!  放弃存储并退出

:e 文件名 打开另一文件并开始编辑

:r 文件名 在当前光标插入文件内容

:r! 命令在当前光标插入命令执行结果

 

set nu  显示行号

set nonu 取消行号

 

 

/向下查询

?向上查询,在查找关键字后,可以用n继续下一个关键字查找

 



Vim使用技巧


:r 文件名  导入文件,导入到光标所在位置


:! which 命令 在vim中使用命令操作


:r!r命令  联合使用,把执行的命令结果导入


定义快捷键:我们要给某一行进行注释的过程是I跳到首字符,i进入编辑模式,然后输入#号,esc退出

:map ^p I#<ESC>(^pctrl +v+p一起按出来的),然后我们只要在任意位置按ctrl p就可以了


wKiom1fJaAfSri1rAAA0Hip7VQo586.png


vim的替换

:起始行,终止行s/^/#/g

:起始行,终止行s/#//g

 

ab替换:输入a的内容,自动变成b的内容

ab wozaigongzuo wozaixuexi 

wKiom1fJaa-zSGboAAAp8e6Fgqo133.png


重启后失效,永久存在,编辑家目录下的vim.rc,有可能空的或者不存在

wKiom1fJadHBN_42AAASVlsRKZc782.png



输入、输出、重定向

输入:过滤器的数据来源

输出:过滤器的数据去向

重定向:标准输入、输出与错误输出,都可以用特定符号改变数据来源或去向

 

 

 

> , >>输出重定向符

>将屏幕上显示到文本中,刷新保存文件的原内容会被覆盖

>>将屏幕上显示到文本中,追加保存

 

< ,<< 输入重定向符

wKioL1fJae7jXDHwAAA2dvHA11U740.png


输出重定向

echo 单句输出

wKioL1fJagaghw4YAAAMyH0AgXg586.png


<  不用键盘输入,用其他输入

wKiom1fJaiOBLmoEAABKP_Z53eQ005.png

这里用wall来广播一下之前编辑的test文件,写法是# wall 0< /mu1/test 意思就是将test中的文件内容广播出去

 

<<  输入,直到end结束

wKioL1fJalTwJPSLAAAgne9vBlQ856.png

wKiom1fJalWQ8azpAAAshaTbIVY684.png



管道操作

将前一个命令的输出结果作为后一个命令的输入数据源

wKioL1fJam7SFUX-AAAZxmQ2rbw728.png




进程


系统是通过进程来完成工作的,每一个进程都有一个独立的进程号,系统通过调用进程号来调度操控进程.

系统的原始进程是init ,initPID总是1

一个进程可以产生另一个进程,除了init以外,所有的进程都有父进程

 

pstree   以树状的方式表现进程的父子关系

wKiom1fJaoyjOhBKAAA9_AccrXk422.png


init 是第一级的,Linux系统上所有运行的东西都可以称之为一个进程。每个用户任务、每个系统管理守护进程,都可以称之为进程。Linux用分时管理方法使所有的任务共同分享系统资源.分时,也就是时间片。

进程状态分为:创建态-就绪态-行动态-结束。

然而我们的系统能够多任务的主要原因就是时间片。一个进程,比如说TELNET的进程,一个进程,比如说TELNET的进程,然后TELNET这个进程就进入就绪态,等待时间片。当CPU分给他的时间片的时间到了的话,他就开始运行,进入运行态.当时间片用玩以后,他就进入阻塞态,然后进入就绪态,等下次CPU分配的时间片。然后又进入运行态.当这个程序运行完了以后,就进入结束态。这就是简单的进程状态流程。

linux的进程树是这样的:KERNEL-0号进程-1号进程(INIT-子进程

 

ps 【选项】

-l 长列表

-a 显示同一终端下的所有程序

-A 显示所有进程

-e 等于“-A

e  显示环境变量

f  显示程序间的关系

-H 显示树状结构

r  显示当前终端的进程

T  显示当前终端的所有程序

u  指定用户的所有进程

-au 显示较详细的资讯

aux 查看系统所有的进程

wKioL1fJatajE-TNAAAatLlX3_A753.png


 第一个F表示这个进程的标志FLAG4表示用户为超级用户

第二个S 表示这个进程的状态STATSTAT有这几种状态

ps显示中的STAT,可以为:

R:正在运行。

S:进程睡眠中,通常可以因事件发生而被唤醒。

T:进程已停止。

D:进程睡眠中,除非发生指定事件,否则不会被唤醒。

Z:僵尸进程,例如未能被父进程回收的子进程。通常是一个系统bug或非法操作。

< :高优先级进程。

N:低优先级进程。

UID 这个就是使用者识别码 (ID),UID 0 时,代表这个账号是系统管理员!

PID 这个进程的ID

PPID为父进程的ID

C  CPU使用的资源百分比

PRI  PRIORITY(优先级)的缩写,PRI的值越小,他的优先级越高

NI  NICE值等下我们也会详细介绍

ADDR 这个是核心功能,指出该进程在内存的哪一部分,如果是运行的进程,一般是 - ,-是个标志

SZ用掉的内存大小

WCHAN当前进程是否正在运行,若为- 表示正在运行,若为 WAIT 就是等待

TTY 登陆者使用的终端

TIME 用掉的CPU时间

CMD 所执行的命令(也就是用什么命令产生的这个进程)

wKiom1fJavXQ1XpvAABeGstQxcU185.png


ps -ef     显示所有进程信息,连同命令行

wKioL1fJax-Q1fmZAAAsPyF4uxw373.png

wKiom1fJax-SNOcAAAAThy52un4998.png



kill  控制进程


语法:kill 【参数】-PID

-l  信号,若果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称

-a  当处理当前进程时,不限制命令名和进程号的对应关系

-p  指定kill 命令只打印相关进程的进程号,而不发送任何信号

-s  指定发送信号

-u  指定用户

 

发送指定的信号到相应进程。不指定型号将发送SIGTERM15)终止指定进程。如果任无法终止该程序可用“-KILL” 参数,其发送的信号为SIGKILL(9) ,将强制结束进程,使用ps命令或者jobs 命令可以查看进程号。root用户将影响用户的进程,非root用户只能影响自己的进程。

只有第9种信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权利忽略。

wKioL1fJazziykRbAABHPNfrffQ840.png

下面是常用的信号:

HUP    1    终端断线

INT     2    中断(同 Ctrl + C

QUIT    3    退出(同 Ctrl + \

TERM   15    终止

KILL    9    强制终止

CONT   18    继续(与STOP相反, fg/bg命令)

STOP    19    暂停(同 Ctrl + Z


init进程是不可杀的


因为水平有限,文中若有错误,多多包涵。同时也欢迎交流。

本文出自 “罹殇” 博客,请务必保留此出处http://wt7315.blog.51cto.com/10319657/1845715

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。
CentOS 6.8 GRUB加密和破解密码实战指南 案例1:服务器在公共场合,为了防止随便有人进入单用户破解root密码,先对GRUB引导进行加密,为了更加安全对启动内核时也加密 1、编辑grub配置文件 [root@localhost~]#opensslpasswd-1//MD5加密转换Password:Verifying-Password:$1$X8cVMw5v$AH0aUHVNix7Tx6wmHAXsf1[root@localhost~]#vim/etc/grub.conf#grub.confge
故障: 在HP 785G6(服务器有2个集成网卡,4个独立网卡)上装centos6.5后配置网卡信息后,重启网卡报错,提示Bringing uo interface eth0:bnx2 0000:02:03.0:etho:register_cnicfailed Determining if ip address isalready in use for device eth0,网络不通,截图如下 排查经过 :查看配置文件, [root@HGJ0205 ~]# cat /etc/sysconfig/netw
之前的话我们的项目都是跑在windows上,今天我们要将我们的程序跑到linxu机器上。在看linux部署之前,我们先看一下node.js类似于asp.net mvc的过滤器或者叫拦截器。在app.js中我们加入如下代码 varbeforeRequest=function(req,res,next){if(req.originalUrl=='/'||req.originalUrl=='/login'||req.originalUrl=='/config'||req.originalUrl=='/user'

数据库备份mysqldump应用总结 - 2016-09-12 14:09:16

[root@ansible~]#mysqldump-uroot-p123456xxx/opt/xxx.sql#备份数据库xxx[root@ansible~]#egrep-v"#|\*|--|^$"/opt/xxx.sqlDROPTABLEIFEXISTS`test`;CREATETABLE`test`(`id`int(4)NOTNULLAUTO_INCREMENT,`name`char(20)NOTNULL,PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=7DEF
某电信运营商3G系统与4G系统建立号码核对系统,因为两个系统的号码状态不一致。源端使用Oracle Goldengate软件,目标端使用Kafka自写CUE程序进行解析源端传输过去的Trail文件。目标端不采用Goldengate的复制进程进行解析。 在某系统中创建Oracle Goldengate相关进程mgr,抽取,投递进程之后,发现抽取进程异常终止。且view ggsevt后发现如下报错: 2016-08-17 16:40:57 ERROR OGG-01028 Oracle GoldenGate C
su和su- 切换方式 实例: sudo 提权 sudo的特色功能 sudo命令的常用参数 注意 案例1——允许zhanghe用户执行所有命令: 案例2——仅允许linuxprobe用户以root用户身份执行cat命令。 案例3——允许linuxprobe用户以任意身份执行命令,且每次都不需要密码验证。 su和su- 在工作生产环境中不要去使用root用户身份,因为一旦执行了错误的命令后可能直接让系统崩溃。但因为许多的系统管理命令和服务为了安全所以只有超级用户才可以使用,因此这也无疑让普通用户受到更多的权

Zabbix添加网卡内外流量监控 - 2016-09-05 18:09:00

题外话:zabbix讲究一气呵成,从头到尾没人打扰然后布置。但是干运维难免有人来打扰,这个过来要求布环境,那个要求来买服务器。所以zabbix之路难免走的坑坑洼洼。 现在笔者想对host名单里面的zabbix_server进行网卡的内外流量情况的一个监控,首先登录zabbix之后,configuration---hosts,出现如下的菜单: 现在可以看到这个zabbix_server后面link了很多个模板,正是因为link了很多的模板,所以导致它的items非常多,42个。现在是要在zabbix_ser

远程桌面排错 - 2016-09-05 17:09:01

最近遇到了一个比较棘手的问题,用户远程桌面无法连接,我的博文中之前也写到了一篇远程桌面排错,但是这次的和之前的大不相同 = = 原因排查步骤 1)首先当然是查看报错,这个是我自己机器上截图的,报错信息都一样 2)首先查看服务器是否开启了远程访问 3)查看目标是否可以ping通 4)查看服务是否正常启动 5)如果要正常远程到目标必须可以telnet到目标的远程端口,默认为3389,这个端口不通,我们之前已经将防火墙关闭了 6)本机上telnet 127.0.0.1 3389,这么做的话可以排除外界因素的干扰

Nginx演练(3)配置内容压缩 - 2016-09-05 17:09:51

如果对HTTP熟悉的话,对request-response请求过程应该很熟悉。 比如访问“www.jd.com",一个完整页面的访问,往往会经过很多次的HTTP请求共同完成,这中间会涉及到浏览器并发数。具体片段如图 客户端请求的资源内容有多种,jpg,css,js,html等。不同文件类型,对应不同MIME_TYPE。每个文件都要通过网络传输到客户端,才能被浏览器渲染,进而展现给用户。想必大家都有给朋友发送文件的经历吧,不管是QQ传输,还是Email传送。如果一个文件过大,想节省点传输时间,都会发送文件之
[root@example~]#yuminstallipvsadm-y安装ip_vs管理工具理论部分我们在上篇文章中详细介绍了,这次进入实操阶段[root@example~]#modprobeip_vs加载ip_vs模块[root@example~]#modprobeip_vs_rr[root@example~]#lsmod|grepip_vsip_vs_rr14200ip_vs1265342ip_vs_rrlibcrc32c12461ip_vsipv6335589271ip_vs[root@exampl