Linux中一切皆文件 内核 + 文件系统 + shell = Linux 文件系统结构:文件进行读写 Linux是一个树形的文件系统结构 第一层目录:/ 整个文件系统的访问入口
bin:存储Linux上经常使用的命令 dev:放置设备的目录 etc:Linux配置文件目录 home:普通用户会在该目录下建立属于本身的目录 root:管理员用户家目录 media:即插即用型的设备的挂载目录,光盘自动挂载到media目录下 mnt:挂载目录 将硬盘中的分区(C/D/E)与目录进行关联 /datas/cpan 《- C分区 /datas/Dpan 《- D分区 /datas/Epan 《- E分区 opt:可选目录 usr:放安装的应用程序 sbin:只有管理员才能执行的命令 var:Linux日志默认存储目录
用于切换当前目录,它的参数是要切换到的目录的路径,能够是绝对路径,也能够是相对路径。 cd /root/Docements # 切换到目录/root/Docements cd ./path # 切换到当前目录下的path目录中,“.”表示当前目录 cd ../path # 切换到上层目录中的path目录中,“..”表示上一层目录
ls 用于列举一个目录或者文件 ls -a 显示全部文件及目录,包括隐藏文件 ls -l 显示文件详细信息 eg. ls -a
grep命令html
该命令经常使用于分析一行的信息,若当中有咱们所须要的信息,就将该行显示出来,该命令一般与管道命令一块儿使用,用于对一些命令的输出进行筛选加工等等,它的简单语法为 -a :将binary文件以text文件的方式查找数据 -c :计算找到‘查找字符串’的次数 -i :忽略大小写的区别,即把大小写视为相同 -v :反向选择,即显示出没有‘查找字符串’内容的那一行 # 例如: # 取出文件/etc/man.config中包含MANPATH的行,并把找到的关键字加上颜色 grep --color=auto 'MANPATH' /etc/man.config # 把ls -l的输出中包含字母file(不区分大小写)的内容输出 ls -l | grep -i file
find是一个基于查找的功能很是强大的命令,相对而言,它的使用也相对较为复杂,参数也比较多,因此在这里将给把它们分类列出,它的基本语法以下:java
find [PATH] [option] [action] # 与时间有关的参数: -mtime n : n为数字,意思为在n天以前的“一天内”被更改过的文件; -mtime +n : 列出在n天以前(不含n天自己)被更改过的文件名; -mtime -n : 列出在n天以内(含n天自己)被更改过的文件名; -newer file : 列出比file还要新的文件名 # 例如: find /root -mtime 0 # 在当前目录下查找今天以内有改动的文件 # 与用户或用户组名有关的参数: -user name : 列出文件全部者为name的文件 -group name : 列出文件所属用户组为name的文件 -uid n : 列出文件全部者为用户ID为n的文件 -gid n : 列出文件所属用户组为用户组ID为n的文件 # 例如: find /home/ljianhui -user ljianhui # 在目录/home/ljianhui中找出全部者为ljianhui的文件 # 与文件权限及名称有关的参数: -name filename :找出文件名为filename的文件 -size [+-]SIZE :找出比SIZE还要大(+)或小(-)的文件 -tpye TYPE :查找文件的类型为TYPE的文件,TYPE的值主要有:通常文件(f)、设备文件(b、c)、 目录(d)、链接文件(l)、socket(s)、FIFO管道文件(p); -perm mode :查找文件权限恰好等于mode的文件,mode用数字表示,如0755; -perm -mode :查找文件权限必需要所有包括mode权限的文件,mode用数字表示 -perm +mode :查找文件权限包含任一mode的权限的文件,mode用数字表示 # 例如: find / -name passwd # 查找文件名为passwd的文件 find . -perm 0755 # 查找当前目录中文件权限的0755的文件 find . -size +12k # 查找当前目录中大于12KB的文件,注意c表示byte
该命令用于复制文件,copy之意,它还能够把多个文件一次性地复制到一个目录下,它的经常使用参数以下:node
-a :将文件的特性一块儿复制 -p :连同文件的属性一块儿复制,而非使用默认方式,与-a类似,经常使用于备份 -i :若目标文件已经存在时,在覆盖时会先询问操做的进行 -r :递归持续复制,用于目录的复制行为 -u :目标文件与源文件有差别时才会复制 eg. cp -a file1 file2 #连同文件的全部特性把文件file1复制成文件file2 cp file1 file2 file3 dir #把文件file一、file二、file3复制到目录dir中
该命令用于移动文件、目录或改名,move之意,它的经常使用参数以下:mysql
-f :force强制的意思,若是目标文件已经存在,不会询问而直接覆盖 -i :若目标文件已经存在,就会询问是否覆盖 -u :若目标文件已经存在,且比目标文件新,才会更新 mv file1 file2 file3 dir # 把文件file一、file二、file3移动到目录dir中 mv file1 file2 # 把文件file1重命名为file2
该命令用于删除文件或目录,remove之间,它的经常使用参数以下:linux
-f :就是force的意思,忽略不存在的文件,不会出现警告消息 -i :互动模式,在删除前会询问用户是否操做 -r :递归删除,最经常使用于目录删除,它是一个很是危险的参数 eg. rm -i file # 删除文件file,在删除以前会询问是否进行该操做 rm -fr dir # 强制删除目录dir中的全部文件
该命令用于将某个时间点的进程运行状况选取下来并输出,process之意,它的经常使用参数以下:redis
-A :全部的进程均显示出来 -a :不与terminal有关的全部进程 -u :有效用户的相关进程 -x :通常与a参数一块儿使用,可列出较完整的信息 -l :较长,较详细地将PID的信息列出 eg. ps aux # 查看系统全部的进程数据 ps ax # 查看不与terminal有关的全部进程 ps -lA # 查看系统全部的进程数据 ps axjf # 查看连同一部分进程树状态
该命令用于向某个工做(%jobnumber)或者是某个PID(数字)传送一个信号,它一般与ps和jobs命令一块儿使用,它的基本语法以下:sql
kill -signal PID 1:SIGHUP,启动被终止的进程 2:SIGINT,至关于输入ctrl+c,中断一个程序的进行 9:SIGKILL,强制中断一个进程的进行 15:SIGTERM,以正常的结束进程方式来终止进程 17:SIGSTOP,至关于输入ctrl+z,暂停一个进程的进行 eg. # 以正常的结束进程方式来终于第一个后台工做,可用jobs命令查看后台中的第一个工做进程 kill -SIGTERM %1 # 从新改动进程ID为PID的进程,PID可用ps命令经过管道命令加上grep命令进行筛选得到 kill -SIGHUP PID
该命令用于向一个命令启动的进程发送一个信号,它的通常语法以下:shell
-i :交互式的意思,若须要删除时,会询问用户 -e :表示后面接的command name要一致,但command name不能超过15个字符 -I :命令名称忽略大小写 # 例如: killall -SIGHUP syslogd # 从新启动syslogd
该命令用于判断接在file命令后的文件的基本数据,由于在Linux下文件的类型并非之后缀为分的,因此这个命令对咱们来讲就颇有用了,它的用法很是简单,基本语法以下:vim
file filename #例如: file ./test
该命令用于对文件进行打包,默认状况并不会压缩,若是指定了相应的参数,它还会调用相应的压缩程序(如gzip和bzip等)进行压缩和解压。它的经常使用参数以下:centos
-c :新建打包文件 -t :查看打包文件的内容含有哪些文件名 -x :解打包或解压缩的功能,能够搭配-C(大写)指定解压的目录,注意-c,-t,-x不能同时出如今同一条命令中 -j :经过bzip2的支持进行压缩/解压缩 -z :经过gzip的支持进行压缩/解压缩 -v :在压缩/解压缩过程当中,将正在处理的文件名显示出来 -f filename :filename为要处理的文件 -C dir :指定压缩/解压缩的目录dir 压缩:tar -jcv -f filename.tar.bz2 要被处理的文件或目录名称 查询:tar -jtv -f filename.tar.bz2 解压:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录
该命令用于查看文本文件的内容,后接要查看的文件名,一般可用管道与more和less一块儿使用,从而能够一页页地查看数据。例如:
cat text | less # 查看text文件中的内容 # 注:这条命令也可使用less text来代替
该命令用于改变文件所属用户组,它的使用很是简单,它的基本用法以下:
chgrp [-R] dirname/filename -R :进行递归的持续对全部文件和子目录更改 # 例如: chgrp users -R ./dir # 递归地把dir目录下中的全部文件和子目录下全部文件的用户组修改成users
该命令用于改变文件的全部者,与chgrp命令的使用方法相同,只是修改的文件属性不一样,再也不详述。
该命令用于改变文件的权限,通常的用法以下:
chmod [-R] xyz 文件或目录 -R:进行递归的持续更改,即连同子目录下的全部文件都会更改
该命令主要用于文本编辑,它接一个或多个文件名做为参数,若是文件存在就打开,若是文件不存在就以该文件名建立一个文件。
1. vim模式 正常模式(按Esc或Ctrl+[进入) 左下角显示文件名或为空 插入模式(按i进入) 左下角显示--INSERT-- 可视模式(按v进入) 左下角显示--VISUAL-- 替换模式(按r或R开始) 左下角显示 --REPLACE-- 命令行模式(按:或者/或者?开始) ex模式 没用过,有兴趣的同窗能够自行了解
2. 打开文件 # 打开单个文件 vim file # 同时打开多个文件 vim file1 file2.. # 在vim窗口中打开一个新文件 :open [file] 【举个例子】 # 当前打开1.txt,作了一些编辑没保存 :open! 放弃这些修改,并从新打开未修改的文件 # 当前打开1.txt,作了一些编辑并保存 :open 2.txt 直接退出对1.txt的编辑,直接打开2.txt编辑,省了退出:wq再从新vim 2.txt的步骤 # 打开远程文件,好比ftp或者share folder :e ftp://192.168.10.76/abc.txt :e \qadrive\test\1.txt # 以只读形式打开文件,可是仍然可使用 :wq! 写入 vim -R file # 强制性关闭修改功能,没法使用 :wq! 写入 vim -M file
3. 插入命令 i 在当前位置生前插入 I 在当前行首插入 a 在当前位置后插入 A 在当前行尾插入 o 在当前行以后插入一行 O 在当前行以前插入一行
4. 查找命令 最简单的查找 /text 查找text,按n健查找下一个,按N健查找前一个。 ?text 查找text,反向查找,按n健查找下一个,按N健查找前一个。 vim中有一些特殊字符在查找时须要转义 .*[]^%/?~$ :set ignorecase 忽略大小写的查找 :set noignorecase 不忽略大小写的查找 快速查找,不须要手打字符便可查找 * 向后(下)寻找游标所在处的单词 # 向前(上)寻找游标所在处的单词
5. 替换命令 ~ 反转游标字母大小写 r<字母> 将当前字符替换为所写字母 R<字母><字母>... 连续替换字母 cc 替换整行(就是删除当前行,并在下一行插入) cw 替换一个单词(就是删除一个单词,就进入插入模式),前提是游标处于单词第一个字母(可用b定位) C (大写C)替换至行尾(和D有所区别,D是删除(剪切)至行尾,C是删除至行位并进入插入模式) :s/old/new/ 用old替换new,替换当前行的第一个匹配 :s/old/new/g 用old替换new,替换当前行的全部匹配 :%s/old/new/ 用old替换new,替换全部行的第一个匹配 :%s/old/new/g 用old替换new,替换整个文件的全部匹配 :10,20 s/^/ /g 在第10行至第20行每行前面加四个空格,用于缩进。 ddp 交换光标所在行和其下紧邻的一行。 xp 交换相邻两个字母的顺序
6. 撤销与重作 u 撤销(Undo) U 撤销对整行的操做 Ctrl + r 重作(Redo),即撤销的撤销。
7. 删除命令 须要说明的是,vim 其实并无单纯的删除命令,下面你或许理解为剪切更加准确。 以字符为单位删除 x 删除当前字符 3x 删除当前字符3次 X 删除当前字符的前一个字符。 3X 删除当前光标向前三个字符 dl 删除当前字符, dl=x dh 删除前一个字符,X=dh D 删除当前字符至行尾。D=d$ d$ 删除当前字符至行尾 d^ 删除当前字符以前至行首 以单词为单位删除 dw 删除当前字符到单词尾 daw 删除当前字符所在单词 以行为单位删除 dd 删除当前行 dj 删除下一行 dk 删除上一行 dgg 删除当前行至文档首部 d1G 删除当前行至文档首部 dG 删除当前行至文档尾部 kdgg 删除当前行以前全部行(不包括当前行) jdG 删除当前行以后全部行(不包括当前行) 10d 删除当前行开始的10行。 :1,10d 删除1-10行 :11,$d 删除11行及之后全部的行 :1,$d 删除全部行 J 删除两行之间的空行,其实是合并两行。
8. 复制粘贴 普通模式中使用y复制 yy 复制游标所在的整行(3yy表示复制3行) y^ 复制至行首,或y0。不含光标所在处字符。 y$ 复制至行尾。含光标所在处字符。 yw 复制一个单词。 y2w 复制两个单词。 yG 复制至文本末。 y1G 复制至文本开头。 普通模式中使用p粘贴 p(小写):表明粘贴至光标后(下边,右边) P(大写):表明粘贴至光标前(上边,左边)
9. 剪切粘贴 dd 其实就是剪切命令,剪切当前行 ddp 剪切当前行并粘贴,可实现当前行和下一行调换位置 正常模式下按v(逐字)或V(逐行)进入可视模式 而后用jklh命令移动便可选择某些行或字符,再按d便可剪切 ndd 剪切当前行以后的n行。利用p命令能够对剪切的内容进行粘贴 :1,10d 将1-10行剪切。利用p命令可将剪切后的内容进行粘贴。 :1, 10 m 20 将第1-10行移动到第20行以后。
10. 退出保存 :wq 保存并退出 ZZ 保存并退出 :q! 强制退出并忽略全部更改 :e! 放弃全部修改,并打开原来文件。 ZZ 保存并退出 :sav(eas) new.txt 另存为一个新文件,退出原文件的编辑且不会保存 :f(ile) new.txt 新开一个文件,并不保存,退出原文件的编辑且不会保存
以字符为单位移动 h 左移一个字符 l 右移一个字符 k 上移一个字符 j 下移一个字符 # 【定位字符】f和F fx 找到光标后第一个为x的字符 3fd 找到光标后第三个为d的字符 F 同f,反向查找。 以行为单位移动 # 10指代全部数字,可任意指定 10h 左移10个字符 10l 右移10个字符 10k 上移10行 10j 下移10行 $ 移动到行尾 3$ 移动到下面3行的行尾 以单词为单位移动 w 向前移动一个单词(光标停在单词首部) b 向后移动一个单词 e,同w,只不过是光标停在单词尾部 ge 同b,光标停在单词尾部。 以句为单位移动 ( 移动到句首 ) 移动到句尾 跳转到文件的首尾 gg 移动到文件头。 = [[ == `` G 移动到文件尾。 = ]] 其余移动方法 ^ 移动到本行第一个非空白字符上。 0 移动到本行第一个字符上(能够是空格) 使用 具名标记 跳转,我的感受这个很好用,由于能够跨文件。 使用 ma ,能够将此处标记为 a,使用 'a 进行跳转 使用 :marks 能够查看全部的标记 使用 :delm!能够删除全部的标记 当在查看错误日志时,正常的步骤是,vim打开文件,而后使用 shift+g 再跳转到最后一行,这里有个更简单的操做能够在打开文件时当即跳到最后一行。只要在 vim 和 文件 中间加个 + 便可。 vim + you.log 触类旁通,当你想打开文件当即跳转到指定行时,能够这样 # 打开文件并跳转到 20 行 vim you.log +20 当你使用 / 搜索定位跳转或者使用 :行号 进行精准跳转时,有时咱们想返回到上一次的位置,如何实现? 只要使用 Ctrl+o 便可返回上一次的位置。
对于一个用Linux开发C程序的人来讲,这个命令就很是重要了,它用于把C语言的源程序文件,编译成可执行程序
该命令用于测算一个命令(即程序)的执行时间。它的使用很是简单,就像平时输入命令同样,不过在命令的前面加入一个time便可,例如:
time ./process time ps aux
| http://www.javashuo.com/article/p-apskrkvq-t.html
UID是用户ID,PID是进程ID,PPID是父进程ID。
UID
UID 用户身份证实(User Identification)的缩写。UID用户在注册后,系统会自动的给你一个UID的数值。意思就是给这名用户编个号。
PID
PID(Process Identification)操做系统里指进程识别号,也就是进程标识符。操做系统里每打开一个程序都会建立一个进程ID,即PID。PID(进程控制符)英文全称为Process Identifier。PID是各进程的代号,每一个进程有惟一的PID编号。它是进程运行时系统分配的,并不表明专门的进程。在运行时PID是不会改变标识符的,可是进程终止后PID标识符就会被系统回收,就可能会被继续分配给新运行的程序。
只要运行一程序,系统会自动分配一个标识。是暂时惟一:进程停止后,这个号码就会被回收,并可能被分配给另外一个新进程。只要没有成功运行其余程序,这个PID会继续分配给当前要运行的程序。若是成功运行一个程序,而后再运行别的程序时,系统会自动分配另外一个PID。
PPID
表明当前进程的父进程ID;
提问: 我想要知道运行中脚本子shell的进程id。我该如何在shell脚本中获得PID。
当我在执行shell脚本时,它会启动一个叫子shell的进程。做为主shell的子进程,子shell将shell脚本中的命令做为批处理运行(所以称为“批处理进程”)。 子shell进程的PID存储在一个特殊的变量‘$$'中, PPID存储子shell父进程的ID(也就是主shell), UID存储了执行这个脚本的当前用户ID. echo "PID of this script: $$" echo "PPID of this script: $PPID" echo "UID of this script: $UID"
1、系统初始化技术演变——开机启动流程 CentOS 6:采用了INIT技术,整个开机过程是自检BIOS——MBR引导——GRUB加载——加载内核——启动INIT进程——读取INITTAB配置文件,根据配置文件指定的模式按顺序来启动进程服务。INIT技术让启动流程很清晰,依赖SHELL脚本。由于启动进程时是按顺序一个一个启动,因此速度慢,会由于某个服务卡住而影响系统的启动。 CentOS 7:采用了systemd技术。这是替代INIT的新技术,采用了并行方式来启动进程,因此启动速度更快,而且兼容INIT的命令以下降迁移成本。 PS:经过ps命令查看PID为1的进程能够得知当前系统所采用的技术 2、网络设置方式的改变 在CentOS 6中让人熟悉的ipconfig在CentOS 7中被ip命令取代了;图形化网络配置工具nmtui取代了setup upgrade-centos-6-to-7.jpg upgrade-centos-6-to-7.jpg 3、主机名与字符集 在CentOS 6中要修改主机名能够经过编辑/etc/sysconfig/network文件,可是在CentOS 7中已经废弃这个方式,而使用了/etc/hostname文件。对于临时修改主机名的方式不变,依然是hostname命令。而且CentOS 7中新增了一个主机名管理工具hostnamectl(该工具对文件名的修改是永久有效)。 而对于字符集的修改,CentOS 7使用了新的配置文件/etc/locale.conf来替代/etc/sysconfig/i18n。若是要临时修改字符集的话方式不变,修改LANG变量,如LANG=zh_CN.UTF-8。新增了字符集管理工具localectl,效果和hostnamectl同样。 4、兼容/etc/rc.local /etc/rc.local文件中记录了须要开机后自动执行的命令,在CentOS 7中该文件虽然已经被废弃,可是也能兼容使用,只须要给该文件赋予可执行权限: chmod +x /etc/rc.d/rc.local 5、runlevel运行级别的区别 CentOS 6中的/etc/inittab文件是基于init技术实现的,因此在CentOS 7中天然没法使用,可是该文件依然被保留下来,只不过其中的内容已经被替换为引导内容,让用户知道如今如何切换运行级别,因为这个不经常使用就不继续描写。 6、服务的管理 这是让用户最不爽的修改,增长了systemctl工具,融合了service和chkconfig命令的功能,具体使用方式见图: systemctl: 融合service和chkconfig的功能于一体 systemctl start crond.service 启动服务 systemctl stop crond.service 中止服务 systemctl restart crond.service 重启服务 systemctl reload crond.service 重载服务 systemctl status crond.service 查看服务运行状态 systemctl list-unit-files 查看全部开机服务 systemctl enable crond.service 开机自启动 systemctl disable crond.service 开机不启动 systemctl is-enabled crond.service 检查是否开机自启动