Linux系统常用命令及用法整理

命令概述

语法  命令+选项(单字母选项可合起来使用如-ivh,单词选项--all = -a)+参数(目录名称,可写成绝对路径或者相对路径)  以空格分隔,不使用参数默认对当前目录的操作

注:不要在目录中出现< > ? * “ 等字符。

使用引号或者\ 可将特殊字符转义eg: mkdir “a_b”  mkdir c\ d

dir/ 表示dir是一个目录   /dir/file  表示file 是一个文件

 

文件操作指令 

①     cd : 通过绝对路径或者相对路径来切换目录

cd -  切换至上次工作的路径   cd ~ 切换至家目录   cd ~student 切换至student用户的家目录  . 代表当前目录 .. 代表上级目录

eg  cd ../../etc/sysconfig

②     ls:

ls –a 列出所有文件      ls –l  查看详细信息              ls –d  列出目录本身信息          

ls –R  递归显示目录内容          ls –i 列出文件inode号码

在ls 命令下的颜色表示:  黑色代表普通文件,蓝色目录,绿色可执行文件,浅蓝色链接文件,黄色设备文件,粉色socket或者pipe文件

- 代表普通文件   b 代表块设备文件   c  字符设备文件      S:socket文件          p:pipe文件          l  代表链接文件

③ cp + 目标 + 目的地 

cp –r  拷贝目录及其子文件   -p  将权限一起拷贝   -v  显示过程   -d  将链接文件拷过来  cp -rpd = cp -a

④ mv

mv passwd test1  将passwd改名为test1

mv + 目标 + 目的地   移动文件

⑤        rm

rm file1  删除文件,会有提示   -f 强制删除,没有提示    -r 删除目录   rmdir 删除空目录

⑥        touch

touch file1 file2 file3  创建文件    touch {report,marry}_{jan,mar,apy}

若文件名存在,则会同步该文件的访问时间戳,修改时间戳和属性时间戳

stat + 文件名   查看该文件的时间戳记

⑦ mkdir  创建目录   -p  递归创建目录   mkdir -- -p 创建一个-p的目录

⑧ ln 创建链接文件   默认为硬链接   加上-s 参数后创建软链接

 

命令行快捷键操作

Ctrl + a  光标移动至最前端

Ctrl +e  光标移动至最末端

Ctrl +c  结束命令

Ctrl +d  结束输入进程 

图形化管理桌面和文件: system- file management preference  选上always open in browser windows后就不会打开多个窗口了

 

帮助系统

① whatis    eg: whatis ls  显示对命令的简短描述 

可以手动更新whatis的数据库  makewhatis

②  --help

提示这个命令的用法和选项,[]表示可选, <> 表示必须项  | 表示或者

③  man page 

man + 章节 + 标题     按q 退出man page

章节1: 普通用户执行的命令         章节2: 系统调用  

章节3:库调用                      章节4: 设备文件信息   

章节5: 配置文件信息,格式         章节7: 杂项

章节8: 管理员使用的命令

Eg: man 8 useradd,  man 5 shadow

man k  关键字         将包含关键字的章节列出来

man page中, / 可搜索关键字   可用箭头,n或者空格上下翻滚

④  Info: 比man 更加详细

* 表示链接  可用tab将光标移至节点处,enter进入,u返回上级节点,p 回到上一个节点   s  搜索  q退出

⑤ /usr/share/doc 程序会将一些帮助文档放在该目录中

⑥ redhat 官网  http://access.redhat.com/knowledge/docs/RedHatEnterpriseLinux

 

用户管理

概念:

①用户的概念:登入系统执行操作的人    最多32个大小写字符组成,包括_ - .

Uid : 用户的系统编号,是系统识别用户的方式,其中root用户的uid为0  uid1~500内为系统用户,500以上是手动添加的用户,uid最大为60000, /home为普通用户家目录

② 组: 分为公有组(有效组)和私有组(默认组),当系统创建一个用户时,会将该用户加入到和该用户同名的组中,这个组就是用户的默认组,一个用户只能有一个默认组,但可以加入多个公有组中

 

命令行管理用户和组:

添加用户: useradd + 用户名   创建完成的用户可用id 命令查看,并可在/etc/passwd文件中看到用户的相关信息

Useradd –u 550 –g 550 +用户名   指定用户的uid和其默认组

-s /sbin/nologin  指定用户的登入shell为无法登入

-d /rhome/user2  指定用户家目录

修改用户: usermod –u 650 –s /bin/bash 用户名  修改用户的uid为650并指定使用的shell   -L 锁定用户使其无法修改密码   -U  解锁  -g  组名 修改私有组

-G  组名  修改公有组(-a 追加公有组) eg: usermod -G student -a hxc884

删除用户: userdel –r 用户名    -r参数可删除用户的家目录

添加组 groupadd + 组名   修改组 groupmod + 组名   删除组  groupdel + 组名 

passwd + 用户名   修改用户的密码(仅用户自己或者root用户使用)

gpasswd + 组名  修改组密码,不常用

所有组信息在/etc/group中查看

 

手动管理用户

/etc/login.defs    系统在创建用户时的全局配置文件

/etc/default/useradd  useradd命令的默认配置

/etc/passwd  用户的账户信息

/etc/group  组信息

/etc/skel  useradd命令需要读取的文件

 

密码管理

普通用户修改密码时,必须包含6个字符以上,并且不可以是黑客字典中出现的单词

/etc/shadow  保存用户密码的文件

/etc/gshadow  保存组密码的文件

Chage –l 用户名   查看用户的密码策略

Chage + 用户名   修改用户的密码策略

 

切换用户

Su – 用户名  切换至该用户,root用户使用su 时无需输入密码

 

授权

Vim /etc/sudoers  或者在shell中visudo

Eg:

Hxc884  ALL=(ALL)  /usr/sbin/useradd

 

引用命令执行的结果

echo `hostname`(是感叹号左边的那个键盘的反逗点)

echo $(hostname)

 

权限:文件是由用户创建的,因此文件也有uid和gid,分别代表了所有人何所有组

权限匹配:

1 user 创建文件的人

2 group  文件所有组的组成员

3 other  除了1和2的其他人

 

使用ls –l 命令查看权限  eg: drwxr-xr-x 1 root root  file1

对于文件来说:

r 文件阅读  w  文件名或内容修改  x  可执行

对于目录来说:

r:短列出目录内容,例如:ls

w:创建子目录以及能否修改子目录的名称

x:进入目录,并且长列出目录的内容(ls -l)

注:对于目录来说如果想w一定要加上x的权限

 

修改文件所有人所有组:

chown + 所有人:所有组 +文件名   -R 递归

chgrp + 组名 + 文件名   只能修改所有组

文件所有人可将文件所有组改为其所在的其他组

 

修改权限chmod

权限不会叠加,权限匹配先匹配所有人然后匹配所有组最后匹配其他人,一旦匹配到之后之后就不匹配了

root拥有所有权限

①使用符号修改

Chmod –R u+x, go=r /tmp/testdir/

Chmod a-x所有用户减去x权限  /tmp……

②使用数字修改

r=4  w=2  x=1

chmod 644 hellodir/

 

特殊权限

1.SUID只能对二进制可执行文件做(把所有人的x权限被替换成了s:u+s)

当对一个文件设置了SUID后,任何人执行该文件时临时拥有文件所有人的权限

2.当对一个文件设置了SGID后,任何人执行该文件时临时拥有该文件所有组的权限(把所有组的x权限替换成了s:g+s)

  当对一个目录设置了SGID后,任何人在该目录下创建的子目录或文件其所属组均继承原目录的所属组(新建的继承)

3.Sticky只能对目录做(把其他人的x权限替换成了t:o+t)

  当对一个目录设置了Sticky后,任何人在该目录下创建的子目录或者是文件只有该文件的所有人和root才能删除

特殊权限的数字表示: SUID:4 SGID:2 Sticky:1

Eg: chmod 3755 rootdir/   表示同时对该目录设置了sticky和sgid特殊权限

注:原来有执行权限的加上特殊权限之后是小写的,原来没有执行权限的加上特殊权限之后为大写的。必须原来要有x权限要不然不生效

 

默认权限(遮照权限)umask

系统创建目录的最大权限为777,文件为666,当不同的用户创建目录或者权限时,默认生成的权限会小于777或者666, 之间的差值就称为遮罩权限

root用户umask默认为022, 因此root用户创建的目录权限为755,文件的权限为644

普通用户的umask默认为002

/etc/bashrc全局配置文件决定的root用户和普通用户的umask的值       

用户的个人配置: 编辑每个用户家目录下的~/.bashrc在最后加上umask=值可以更改用户的umask值以及设置命令别名

 

ACL权限:访问控制列表: 当以上的权限都无法满足需求时才使用

必须先对相应分区开启acl功能

tune2fs –l /dev/sda3  查看该分区是否开启acl功能

手动开启acl功能:

①  vim /etc/fstab 在相应分区的defaults后加上acl

②  tune2fs -o acl /dev/sda3

去掉acl:tune2fs -o ^acl /dev/sda3  以上2方法会永久生效

③临时性的生效:  mount -o remount,acl /dev/sda3

权限先读ACL再读普通权限

 

设置ACL权限

setfacl –m u:bass:rwx /tmp/importantdir  

setfacl –m g:gname:rwx filename

分别为某个用户或者某个组设置acl权限  

getfacl /tmp/inportantdir  查看设置了acl后的权限

setfacl -x u:redhat /tmp/test:删除该文件与redhat有关的acl

setfacl -b  /tmp/test:删除整个目录的acl

 

若要让下级目录继承acl:

setfacl -m u:boss:rwx /tmp/test/

setfacl -m d:u:boss:rwx /tmp/test    

d:default继承上一级目录的acl

注意:只对新创建的目录继承,原来就有的目录是不继承的

acl里面的mask决定了除所有人和普通的other之外,其他所有人和组能够得到的最大权限,对文件的所有人和other不起作用

setfacl -m m:rw 修改mask权限,mask 也可通过tune2fs –l 查看到

 

文件的特殊属性

lsattr 直接查看文件的特殊属性

chattr 更改特殊属性  + 增加某个属性,- 删除某个参数

A:文件的访问时间戳(atime)不被修改

a:文件只能追加数据(echo >>),不能删除不能修改数据,只有root能设置此权限

i:文件不可改变

 

SHELL

Shell是一种命令解释器,负责将用户指令翻译给kernel,并将kernel处理后的结果传回给客户,是人机交互的接口

硬件——>kernel——>shell——>应用程序

shell提供用户与内核的的应用接口,用户或者应用程序通过shell调用kernel,kernel再调用硬件,对硬件进行操作。

bash是shell的一种,由GNU开发

echo $SHELL 查看当前使用的shell

 

/etc/profile 更改历史记录的长度

用户家目录下的.bash_history下面保存着上一次登录敲过的命令

history -c可以清除历史记录

!命令号 执行命令号所对应的命令

!-5  执行之前的第五条命令

!!直接执行上一个命令

ctrl+r  搜索执行过的命令

tab  按以下为命令补齐,2下为查看

 

正则表达式

^  以什么什么开头

$  以什么结尾

[1-9] 匹配1~9的数字

[abc] 匹配括号内的任意字符

[^abc] 匹配除括号内字符外的任意字符

*  匹配1至任意字符    ? 匹配唯一字符

\< 以什么单词开头    \> 以什么单词结尾   | 或

~ 鄂化符  代表家目录      {}  代表集合

$()或者反逗点  引用命令的执行结果

“”双引号为弱引用:转意一般的字符

‘’单引号为强引用:转意特殊字符,相当于\

脚本: 将命令通过一定的逻辑写在一个文本文件中,并再赋予该文件一个执行权限,执行该文件相当于执行该文件中的命令

 

$变量名  查看变量的值     echo $变量名  显示变量值

Eg  A=123   echo $A”abc”  显示123abc

unset 变量名   清除变量值

本地变量: 当前终端可使用的变量

全局变量: 全局子shell都可继承的变量

export 变量名  把本地变量变成为环境变量(全局变量)

保存环境变量的配置文件/etc/profile,用户自己的变量~/.bash_profile,还有些变量定义在/etc/bashrc和~/.bashrc中

在~/.bashrc中定义命令别名:eg   alias guanji=“poweroff”

 

通用变量:

PS1: 终端提示符

PATH: 可执行文件的路径

HISTSIZE  历史命令条数

EUID  有效UID,可执行文件设置suid后,访问者临时拥有的uid 

 

登录shell和非登录shell:

登入shell: 正常登入,正常使用程序,su – 用户名

非登入shell: 登入但不能正常使用程序  su 用户名

 /etc/profile       放环境变量的文件

 ~/.bash_profile    自己的环境变量

~/.bashrc           本地变量和别名

 /etc/bashrc        bash启动执行的任务

登录shell读4个文件,非登录shell读后2个

退出的时候会执行 ~/.bash_logout,可在该文件中写上相应命令

启动流程:/etc/profile  ~/.bash_profile ~/.bashrc /etc/bashrc

 

创建脚本

#!/bin/bash  声明该脚本使用哪一种bash来解释

#This script used for XXX  简单的注释 

正文

Read –p “Please enter: ”IP

Ping –c 1  $IP &> /dev/null

if [$?=0]

   Then echo “$IP is UP~”

else XXXX

fi

 

$? 返回上一条命令执行错误还是成功,成功返回0,不成功返回非0,read用于接收键盘输入

./test.sh 1 2

位置化参数$0(为它本身)$1,$2为后面跟的第一个和第二个值

大于等于10以上的位置化参数要加上大括号  ${10}

&&  表示and: 只有左边的命令执行成功才执行右边的命令

|| 表示或: 只有左边的命令执行不成功才执行右边的命令

; 多个命令的间隔,依次执行但不做判断

 

Bash标准IO及管道

标准错误:把正确的输出结果成为标准输出,把错误的输出结果成为标准错误

IO重定向(区分标准输出和标准错误)

 “1>”或者“>” 把正确的重定向

 “2>”          把错误的重定向

 “&>”         无论正确的还是错误的都重定向

 “2>&1”       把错误的转成正确的并一起交给管道处理(必须使用管道)  2&1)|less

 

重定向符号> 和>> 的区别

echo hello > test.sh 会覆盖原有内容

echo hello >> test.sh  会追加在原内容后

 

管道:

| 称为管道  

命令1 |  命令2 :将命令1的标准输出作为命令2的标准输入,可用管道连接多条命令

Eg: cat /etc/passwd | less

 

Tee命令

命令1 | tee 文件名 | 命令2: 把命令1的结果保存在tee后面接的文件中然后用命令2进行处理这个结果,用于同时查看和记录这些输出,用来记录复杂管道的排错

 

字符转换命令

 tr "a-z" "A-Z" < .bashrc把小写改为大写

cat > exe.file 由键盘输入创建文件 ctrl d  终止输入

cat> exe.file < ~/.bashrc 使用输入重定系那个创建一个跟.bashrc内容一样的文件

 

把多行发送给标准输入,直到遇到终止单词

cat >test <<ok(终止单词);

 

文本处理工具

①文件内容的查看:

less一页一页的查看文件的内容

cat 将文件的内容作为标准输出

tac将文件的内容倒过来

②文件部分截取:

head -n 10 + 文件名  显示该文件前10行内容

tail –n 10 + 文件名   显示该文件后10行内容

(tail -f动态的监控某个软件一般用来监控日志=tailf)

 

当使用tail -f xxxx.log| grep -i error > error.txt 时,由于pipe buffering(不太了解这个)的原因,输出会无法重定向。要解决这个可以使用如下命令。tail -f xxxx.log | while read LINE; do echo $LINE|grep -i error;done >> error.txt

 

③按行过滤关键字

grep + 关键字 + 文件名

-i不区分大小写

-n显示关键字所在的行号

-v除了关键字所在的行其余的都显示(反向过滤)

-A2包含关键字所在行的后两行内容(After)

-B3显示关键字及关键字所在行的前三行(Before)

--color=auto 将关键字用颜色显示出来

④按列过滤文本cut

-d":" 以冒号为分割 -d‘‘ 以空格为分割 如果没有指定分割默认为tab键为分割

-f第几列

-c以字符的方式切割  cut -c2-5 /etc/passwd 显示每一行的第2至第5个字符

⑤分析文本

wc  文本数据统计

-l 统计行数

-w(word)单词数

-c 字节数  -m 字符数

 

sort 文本的排序

-t: -k3  -n 以冒号分割的第三列按数字的方式由小到大排序  -r由大到小

uniq  -c 查看文件内容并且告诉重复行有多少(-c来计数)原来文件内容并没有改变只是在终端上显示出来,一般是sort和uniq联合使用用来删除重复行

 

diff比较文件,与patch合用    

diff file1 file2 第二个文件为参照

eg: 13a14,16从第一个文件的第十三行开始加上第二个文件的第十四到十六行。c为修改的,a为附加的

          

用diff来打补丁 

diff –r递归比较u以统一格式N /tmp/path1 /tmp/path2 > /tmp/path.diff

diff -u file1 file2 > diff.patch

patch -b file1 diff.patch

diff file1 file2 就会没有显示的信息了

 

文本编辑器

vim的模式:

1.命令模式:翻页,文本导入等

2.插入模式 i  

3.退出模式 esc

 

命令模式:

hjkl 光标移动  +数字  跳跃移动

w 向右移动一个单词  b向左移动一个单词

( 句间向左移动  ) 向右

{} 段落的移动

G  移至文件末尾  gg  移至文件开头

数字N+G  跳至第N行

V  选中行  v 选中单词   y 复制    p  粘帖

yy  复制一行   dd  删除一行,相当于剪切

cc:删除一行并且进入插入模式     r  替换光标所示内容

u:撤销最近一次修改

U:撤销对光标所在行的所有改变操作

Ctrl+r取消“撤销”的操作(取消上一次撤销)

执行命令

:r  +文件    将文件中的内容读到当前文档中

1,10w /tmp/newfile将文件中的1-10行写入到/tmp/newfile中

1,5w>> 追加不覆盖原来的内容

:set nu  显示行号

":.!"后面可以直接执行命令,把命令的执行结果输出到当前文件中

:!临时执行某条命令,不把命令的执行结果输出到文件

当vim 打开多个文件时   :n切换到下一个文件  :rew返回上一个文件

/ 进行搜索,n 光标移至下一个key,N移至上一个Key

:help 打开帮助文档,或者在终端中输入vimtutor

 

插入模式:

A:光标移动到行末进入插入模式

I:光标移动到行首进入插入模式

i: 光标当前位置插入

O:光标所在行的上一行进入插入模式

o:光标所在行的下一行进入插入模式

退出模式:w保存  q 退出  !强制  :wq=:x  

 

vim下的命令的搜索和替换

:%s/user/root将user替换为root,只会替换每行的第一个匹配项

:%s/user/root/gi全局替换,其中i为不区分大小写

:1,5s/user/root/gi一到五行之间的替换

/etc/vimrc 为vim的全局配置文件,~/.vimrc 为用户个人的配置文件,默认情况下不存在,可编辑该文件并输入set nu,则之后用vim打开文件都会显示行号,用vim 打开文件时若提示有冲突文件已经被打开,可尝试删除该文件的隐藏文件

 

文件的查找

locate是基于数据库的查找  -i:不区分大小写  -n 2 只显示匹配结果的前2项

-r  后接正则表达式  eg: locate –r “.conf$”

数据库位置  /var/lib/mlocate/mlocate.db

Updatedb  更新数据库

/etc/sysconfig/updatedb.conf  定义了数据库是如何更新的,计划任务每天是自动进行updatedb

 

find + 目录 + 条件 若不加目录则默认在当前目录下查找

eg  find / -name “.conf”  find命令是基于真实硬盘的查找,并可在查找时执行命令,功能比Locate多

find / -name passwd 查询根目录下的passwd文件

find  -iname  passwd 当前目录下不去分大小写查找passwd文件

find  -user redhat -group redhat  查询当前目录所有人和所有组均为redhat的文件,两个条件都必须满足

find  -user redhat -o -group redhat 两个条件满足一个就可以的(所有人或所有组为redhat的都可以)

find  -user redhat -not -group redhat 查询当前目录下所有人为redhat但是所有组不是redhat的文件

find  /home -not \( -user redhat -o -user test\) 查询/home下所有人既不是redhat也不是test的文件

find  /home -not -uid 500  查找home下所有人不是uid500用户的文件

find  -perm 755 权限正好是755的文件

find  -perm +4755 只要满足任意一个栏位就可以

             -755  三个栏位上都必须大于或等于 

find -size 1M 大小正好是1M的文件  +1M 大于等于1M  -1M小于等于1M

find / -mtime 4  找出4天前这一天24小时内修改过的文件     

       -4:四天之内修改包含第四天

       +4:四天之前修改但不包裹第四天 

        0:从现在开始到明天的这个时候

 

-type 根据文件的类型查找  f:普通文件 d:目录 l:链接文件 s:socket

使用find在查找的同时执行命令

find / -type f -name "*.conf" -ok cp {} {}.orig \; {}引用前面查询的结果 空格反斜杠分号表示命令结束

-ok会有提示 -exec不会有提示直接执行

find / -size +1M –exec gzip {} \; 压缩找到的文件

find /root/ -perm -004 –exec chmod o-r {} \;

whereis寻找说明文件  -b查找可执行文件

which查找可执行文件,是在PATH变量定义的路径中进行查找

 

文件的打包和压缩

1.gzip    

2.bzip2

bzip2与gzip相比更新,压缩比更高

tar -cvf file.tar打包成什么样的名字 /book/对什么目录做

gzip file.tar 或者 bzip2 file.tar  使用gzip或者bzip2压缩打包的文件

可使用tar工具直接打包并压缩,-z 调用gzip工具, -j 调用bzip2工具

tar –zcf/jcf  打包压缩成的名字 打包的文件或者目录

解压缩

gzip -d |gunzip + 文件名  解压缩

bzip2 -d |bunzip2 + 文件名 解压缩

tar  -xf直接打开无论哪种工具打包和压缩的

 

软件安装

1 二进制文件直接执行

2 rpm包: 使用rpm工具或者yum工具

.rpm:代表这个文件是编译过的文件

.src.rpm:说明这种文件含有源代码还没有编译好

rpm软件包的命名:软件包名-版本信息-发布的次数.适合的系统.适合的硬件平台.拓展名

i386,i586 表示cpu的架构,i386适用于所有的x86平台,i586是针对586级别机器的优化编译,x86_64支持64位cpu, noarch没有什么硬件上的限制里面没有二进制文件

 

rpm包安装实质上就是将包中的文件放到系统的各个目录下:

配置文件放到 /etc/下

可执行文件放到  /usr/bin 下

链接库文件放到  /usr/lib 下

共享文档及manpage 放到 /usr/share/man 下

 

rpm包的安装

rpm -ivh 安装  -e卸载

-U升级后面跟着的包(如果没有安装则安装,安装了的则升级为现在的)

-F后面跟包名(更新已安装包里面的文件)

--force强制安装

--nodeps 忽略依赖关系

--root指定根

--test测试软件包但并不完全安装

rpm -ivh kernel*.rpm 更新内核,不要直接用-F和-U

 

rpm包的查询:

1.对于已经安装的包的查询:

rpm –q查询a所有  列出操作系统中所有安装的rpm包

-qf查看配置文件来源于那个包,后面跟着一定是配置文件的绝对路径

-qi查看已经安装包的版本信息

-ql查看已经安装的包在安装过程中生成的文件

2.对于没有安装的包的查询:

rpm -q所有的参数加一个p就可以看没有安装的包的信息

rpm –qlp  查看会安装处哪些文件

 

rpm的校验:

对已安装包文件的验证(文件是否被改变过)

 rpm –V + 软件名称(只有被改动过才有信息输出) rpm –Vp + 未安装软件

      -Va 列出系统中所有可能被改动过的软件

      -Vf + 文件绝对路径  验证某个文件是否被改动过       

将官方公钥导入系统中: rpm --import RPM-GPG-KEY-redhat-release (公钥在光盘中)

导入后的公钥放在/etc/pki/rpm-gpg/ 下

在安装软件之前   rpm -K  软件包名  进行验证

也可使用md5sum + 软件名  得到md5值,然后与官方比较看是否一致

rpm2cpio 软件包名 | cpio -imd 如果后面什么也不加就是全部解压

rpm2cpio 软件包名 | cpio -id  ./etc/rc.d/rc.sysinit 将软件包中的这个文件单独的取出来到当前目录

 

使用yum工具管理软件包

Yum工具可解决软件包间的依赖关系

yum的配置文件在/etc/yum.conf ,缓存放在/var/cache/yum 中

 

在本地建立软件仓库:

Mount –o loop XXX.iso /mnt

Baseurl=file:///mnt/Server

Baseurl=http://www.redhat.com/XXX   仓库在网络上的写法

 

yum的认证:/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

若要打开该认证需在repo文件中:

gpgcheck=1

file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

 

yum –y避免交互 install 软件名   

yum -y remove 删除包的时候只删除包本身不删除依赖关系

yum list 列出软件仓库中的所有软件包

yum list 包名   列出指定软件包

yum search 软件包名    查找匹配的软件包

yum list update 列出可以更新的包

yum list installed 列出已经安装的包

yum list extras 列出已经安装的但不是软件仓库中的包

yum info 软件包名   列出软件包的信息

yum whatprovides /etc/shadow 列出是那个软件包提供的

yum repolist  列出所有开启的仓库

yum grouplist 列出包组

yum groupinstall “包组名”  包组安装

 

RHN: 红帽提供的网络服务,yum命令首先会去尝试连接RHN,若连接成功则不会再读本地仓库

RHN的注册:rhn_register图形化打开注册

 

./configure --help 编译完成之后会生成Makefile

     --cache-file=FILE  会对软件进行测试,并将测试结果放在file中

     --prefix设置安装路径默认为/usr/local 

     --bindir 二进制文件的安装位置默认为/usr/bin

     --libexecdir程序在执行过程中要调用的二进制文件

     --datadir 指定通用数据文件的安装路径

     --libdir 程序当中的库文件的安装路径

     --includedir 指定C(C语言)的头文件的安装位置

     --enable 开启功能

     --disable 关闭功能

     CC=/usr/bin/gcc当原来的编译器太老了,后面指定新的编译器的绝对路径

 

进程管理

进程:被载入内存中的指令的集合(或者程序在运行时候的状态)

进程的标识:PID   PPID代表父进程号   PID=1的进程时init,是所有进程的父进程,所有的命令都是bash进程的子进程

/proc 目录中记录了当前运行的进程,以及其他的系统属性如cpuinfo,meminfo等

 子进程的产生: 父进程以fork的方式复制自己生成子进程,然后子进程调用exec族执行自己的操作

线程: 工作在多任务环境中,一个进程至少有1个线程,如果有多个线程就能同时处理多个客户的请求

 

/proc/cpuinfo(CPU的信息) 

/proc/meminfo(内存的信息) 

/proc/cmdline(内核使用的参数)

/proc/version(当前系统的版本信息)

/proc/devices(设备的信息)

/proc/filesystems(当前内核所支持的文件系统)

/proc/mounts (当前操作系统挂载信息)

/proc/crypto(当前已安装内核的加密算法)

/proc/modules(当前系统所加载的模块)

/proc/kcore (内存二进制映像)

/proc/partitions(当前系统的分区信息)

/proc/buddyinfo(当前内存的碎片信息)

/proc/sys (可以对系统的参数进行调整)

/proc/sys/net/ipv4/icmp_echo_ignore_all 将其值改为1,可以防止别人ping     

 

管理进程的工具  PS命令

ps  查看当前终端的信息

   -a 查看所有的终端的信息

    -u 显示是哪个用户出触发的这个进程

    -x 把后台进程一起显示出来

    -o 后面跟着自定义要查看的属性 如%cpu,%mem,pid,comm

    -ef 树状的查看进程(加-和不加-就是显示不显示用户)

 

 内存中进程的状态

        S打头的为休眠状态

        R打头的为正在运行

        Z僵尸进程

pgrep -U 用户名   查看该用户触发的进程号

      -G 组名     查看该组中用户触发的进程

pidof 进程名   查看程序的id号码

 

用信号的方式和进程进行通讯

1 重新读取服务设定,即重新读取配置文件

2中断进程 ctrl+c

3 正常退出键盘 相当于ctrl+d

9 强制杀死某个进程

15等待正常的退出关闭

 

①使用kill 来给进程发送信号

kill -l查看他所支持的所有的信号类型

kill +信号 + 进程PID (例如:kill -1 pid号 可以重新读取配置文件)

②使用killall来给进程发信号

killall后面直接跟信号和进程的名字 eg: killall -9 ping

killall能够将同名的进程同时删除,kill和killall若不加信号都默认是发送15信号

      

进程的NICE值:进程的谦让度,通过nice值对进程调度,nice值越小,CPU处理越优先 

nice值范围:

root用户(-20到1)

普通用户(0到19)

nice -n 5 ping 192.168.0.254 对于还没有启动的进程进行调整

renice -n 5 PID   对于已经启动的进程的调整

只有root用户才能调节nice的值,一般不设定,除非碰到特殊的情况譬如说备份

 

top交互式的管理进程(动态的管理进程)

P cpu的占用率从大到小的排列

M 内存的使用从大到小的排序

T 按执行时间的长短由大到小排序

A 根据进程执行的先后顺序排列

k 交互的对进程处理

q 退出top

 

job作业控制

①  ctrl+Z相当于发送了17的信号,暂停某个进程

jobs  查看当前的后台进程

② bg将暂停运行的进程调到后台运行,也可用进程名&   如gedit&

  删除后台进程 kill -9 %jobs号

③  fg + %jobs号 将后台进程调至前台运行

     

计划任务

一次性计划任务:

at 19:00 执行的命令用绝对路径 ctrl+d结束

at -l 查看计划任务

at -c  任务编号   查看计划任务的详细信息:保存在/var/spool/at/

at -d  任务编号   删除计划任务1

 

重复性的计划任务:

crontab -e 回车 进行编辑

分 时 日(每月中的日) 月 周(每周中的日)+ 命令的绝对路径

/etc/crontab中有具体格式

00 19 * * *  /sbin/poweroff   每晚19点关机

*/10  每隔10分钟

*/10 16-18   每天16到18点每隔10分钟

crontab -l 查看

删除: crontab –e 编辑删除

计划任务保存在var/spool/cron/中与用户同名的文件中 ,故可在此目录中直接编辑计划任务

crontab -u redhat -e 为redhat用户编辑计划任务

注:计划任务只能写一年

 

系统信息的收集

hostname 主机名     调用/etc/sysconfig/network

whoami 当前正在登录操作系统的用户

who 查看当前登入系统的用户,也可用w,显示的信息比who更加详细

last 历史登录的明细

lastlog 记录每个用户最后登录的信息

free -m 查看内存的使用情况

df -h 硬盘使用情况

du 统计文件、目录的大小,一般来统计目录的大小 du -sh 统计整个目录的大小,如果不加s就是统计目录里面的各个子目录或者文件大小

dmesg 开机屏幕输出的信息

wall 给全部登录的用户发送广播  eg: wall hello

write + 用户名 + 其登入的终端  给该用户写信 write root pts/1

cat /etc/redhat-release 查看当前操作系统版本信息

或者使用lsb_release -a 查看当前操作系统的版本的详细信息

 

分区

分区:在64字节的分区表中填写相应信息

分区可以分为: 主分区,扩展分区,逻辑分区

零磁道: 硬盘中离主轴最远的磁道

分区大小= (结束柱面-起始柱面) *  每个柱面大小

 

分区使用的命令 fdisk

fdisk –l 查看当前的分区信息

fdisk /dev/sda  对sda硬盘进行分区,依据提示输入

n 新建分区

p 查看分区表

t 改变分区的id 

w 将改变写入分区表中

eg: First cylinder:8339

Last cylinder: +500M

ls /dev/sda  可查看当前内核已经识别的分区

w写入分区表后,使用partprobe命令在5中可让内核直接识别新分区二不用重启

图形化的分区工具:应用——系统工具——Disk Utility

 

格式化新分区

刚分出来的区由于没有文件系统,所以还不能够使用,所以需要使用mkfs命令将其格式化成某个文件系统

mkfs -t ext4 /dev/sda5 (-t 指定文件系统格式) (-L 指定设备的卷标)

mkfs.ext4  /dev/sda5

之后即可挂载新的分区

 

设置开机自动挂载分区

vim /etc/fstab

第一个栏位:设备名(在6中用UUID唯一表示) blkid /dev/sda5 查看设备的UUID

blkid /dev/sda5 >> /etc/fstab                                      

e2label /dev/sda5 + 新卷标  给该分区加一个卷标   之后可使用mount -o remount,ro LABEL=DATA

第二个栏位:挂载点

第三个栏位:文件系统类型

第四个栏位:选项,通常使用default,也可在其后加入其它选项

编辑完fstab文件后可用mount –a 测试,该命令会根据fstab的信息自动挂载分区

 

swap分区 : 虚拟内存,默认为物理内存的2倍

free -m (以兆M的方式显示内存以及swap的信息),swap分区无法减小,只能删除或者增加一个swap分区

 

扩展swap分区

方式一  来自分区

新建一个分区/dev/sda8    t——>82(swap分区)

用mkswap格式化  mkswap /dev/sda8

用swapon /dev/sda8 挂载启用swap分区

用swapon -s查看swap分区

用swapoff /dev/sda8停掉该swap分区

vim fstab使开机自动生效

/dev/sda8  swap   swap   defaults    0    0

swapon -a 自动加载写在/etc/fstab中的swap分区

 

方式二 来自文件

创建大文件dd if=/dev/zero of=/root/swapfile bs=512M count=1

格式化mkswap /root/swapfile

加载该swap分区  swapon /root/swapfile

/etc/fstab中的default,pri=1 为优先级,数字越小的优先级越高

                           

加密分区

/dev/sdaX 做成加密分区后 <——> 会生成加密分区的映射/dev/dm-X ,只能使用该映射设备,原分区将无法使用

步骤:

1 创建一个新的分区/dev/sda6

2 将新分区格式化为加密区 cryptsetup luksFormat /dev/sda6  输入密码后,大写YES

3 打开该加密分区并为其指定映射名 crypsetup luksOpen /dev/sda7 mydisk 创建出来的映射设备在/dev/mapper/目录下

4 第一次使用先把映射设备格式化 mkfs.ext4 /dev/mapper/mydisk

5 挂载起来使用 mount /dev/mapper/mydisk /mnt

6 若想要关闭该加密设备,则先卸载,然后 cryptsetup luksClose /dev/mapper/mydisk

7 如果下次再想用就再用luksOpen 重新给做个映射名

       

开机自动挂载该加密设备:

①vim /etc/fstab写上: /dev/mapper/mydisk /mnt ext4  defaults 0 0

②vim /etc/crpyttab(专门写加密设备的文件)写上

mydisk  /dev/sda8  /etc/key密码文件的权限要设为600

echo “uplooking” > /etc/key

③告诉系统要去读该密码文件cryptsetup luksAddKey  /dev/sda8 /etc/key

 

文件系统的管理

设备的读写必须要有文件系统,linux中常用ext文件系统

区别:             ext3    ext4

单个文件            2TB    16TB

分区               16TB    1EB

子目录数        32000个   无限个

1PB=1024TB  1EB=1024PB

 

ext文件系统的构成

1 block 存放数据的数据块,一般一个block为4K

2 inode 存放文件属性(时间戳记,权限,大小),及真实数据起始block的地址,也称硬链接

3 superblock 记录了所有blcok和inode的信息,tune2fs -l命令查看的就是超级块

通常一个目录会占用一个block,目录的block中存放的是文件的inode , ll命令可查看到文件的inode信息,ls -i查看文件的inode号码

 

硬链接和软链接

硬链接  ln + 目标文件名 + 硬链接名  

创建硬链接事实上就是复制原文件的inode,导致有多个inode指向同一块block,目录不能做硬链接,只能对文件做

软链接  ln -s  <目标文件>  <软链接名字>

       

cp 复制块到新地方,创建新的inode

mv 若是在同一个文件系统中,则是将原文件改名,若是在不同的文件系统中,则是先做cp后做rm

rm 删除文件名,释放inode,并将block设为可用     

    

可在mkfs时指定block的大小以及inode的数量

mkfs.ext4 –N 10000(inode的数量)-c(格式化前自检) -b 2048K(block的大小)-i 2048(一个inode管理多少block) 

 

fsck 对文件系统进行检测

fsck -A 根据/etc/fstab(中最后一段)对文件系统自检(不能在挂载的时候自检)(yes or no)

    -a + 设备名  自动修复文件系统问题

    

对文件系统进行升级

ext2——>ext3 tune2fs -j /dev/sda3 

ext3——>ext4 tune2fs -o extents,uninit_bg,dir_index /dev/sda3 升级之后必须要进行修复fsck /dev/sda3 (或者tune2fs -fDC0 /dev/sda3修复)

      

/etc/mtab记录的是当前已挂载的分区

/etc/fstab 是系统启动时要自动挂载的分区

    

Mount命令

mount -t(设备类型) 设备名  挂载点

      -o 后面加挂载选项  eg: mount -o ro,remount /dev/sda6

mount -o loop xxx.iso /media 挂载iso设备

fuser -kvm /dev/sda3 强制卸载

卸载设备:  umount 后跟设备名或者挂载点 

 

转载于:https://www.cnblogs.com/hxc884/p/5467194.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值