CentOS初级扫盲 - Go语言中文社区

CentOS初级扫盲


发行版介绍

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX(可移植操作系统接口Portable Operating System Interface ,缩写为 POSIX )和UNIX(1969)的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

GNU和GPL(GNU General Public License,GPL)是由Richard Stallman在1983年9月27日公开发起的,即"反版权"(或称Copyleft)概念。是指软件可以自由地"使用、复制、修改和发布",所有GNU软件都有一份在禁止其他人添加任何限制的情况下授权所有权利给任何人的协议条款,GNU通用公共许可证。 单位或个人开发的商业版本软件,只要使用了有GPL的软件,可以收取费用,但是必须开放源代码。

Linus Benedict Torvalds,Linux内核的发明人及该计划的合作者,与1991年发布了Linux内核。

Linux加入GNU计划之前,有不少组织把Linux包装发行。比如比较Debian(1993)和Slackware(1993)。加入GPU之后有其它发行版,例如Slackware一个比较出名的分支是SUSE(1994)。Debian一个分支是Ubuntu(2004),Kali Linux是Debian的一款衍生版,用于渗透测试。RedHat诞生于1994,其中出名的RHEL主要针对企业,2个分支,新技术先在Fedora上跑,如果稳定再移植到RHEL中。CentOS也是基于RedHat(2003)是分支。国产有ReadFlag(1999)。

目录介绍

可以参考这个

http://www.linuxidc.com/Linux/2013-01/77368.htm

 

启动流程介绍

第1阶段:

bios加电自检,检测硬件。

确认启动介质,找到启动介质MBR。

第2阶段:

找到MBR后确认GRUB,在grub配置文件中确认内核以及内核映像位置。

第3阶段:

由内核控制,内核只包含最基本的硬件driver,常见的硬件驱动在initrd中。

initrd先释放内存中临时构成一个只读文件系统,在这个只读的文件系统中,内核回字形临时文件系统中的init进程,目的至加载各种驱动。驱动加载完成,内核再次挂载真正的根文件系统,内核把控制器给了/sbin/init进程。

第4阶段:

/sbin/init是父进程,接管控制权后,读取inittab文件来执行相应脚本系统初始化。

  1. 执行系统初始化脚本/etc/rc.d/rc.sysinit
  2. 执行/etc/rc.d/rc脚本
  3. 执行用户自定义/etc/rc.d/rc.local
  4. 完成任务后,启动终端/sbin/(tty)或者x-windows等待用户登录。

 

fg用法

用Jobs查看暂停的任务,可以用fg调至前台继续运行。

 

bg用法

 

暂停的任务用bg调至后台运行,不在前台显示。

快捷键用法

crtl+c终止当前命令

crtl+D,退出当前终端,也可以输入exit

ctrl+z,暂停当前进程,可以用fg恢复,暂停的进程也可以用jobs查看

ctrl+L,清屏

ctrl+u,删除前面敲的字符

ctrl+A,移动光标至行首

crtl+E移动光标到行尾。

 

arp用法

直接输入arp就行了,可以查同一局域网中与之有通信的设备的mac。

 

 

route用法

 

常用route -n或者-C

netstat查看端口

一般用这2个

netstat –lnp查看当前系统启动哪些端口

netstat –an查看网络连接状况

 

 

 

 

抓包工具tcpdump

选项:

-nn显示成ip+端口号形式

-i跟设备名称

-c指定包数量

-w写入指定文件中,可用wireshark查看

 

 

 

 

lsblk用法

 

一般用lsblk或者lsblk -f就可以了。

lsscsi用法

一般用lsscsi --list或者lsscsi就可以了。

 

 

lsblk可以查看到硬盘分区状态或者已经挂载的文件系统mount point。

lsscsi可以查看到详细的某块硬盘的状态,如timeout或者queue_depth。

less用法

g快速返回文件首部

G快速到文本最末端

/当前行向下搜索

?当前行向上搜索

n显示下一个

q退出

 

 

cp用法

r拷贝一个目录必须加这个

 

 

rm用法

r删除目录

f强制删除

 

mkdir用法

p不存在的目录会报错,需要加这个。

 

 

cat用法

-A显示所有东东,包括特殊字符。

 

head 用法

n显示前面多少行

 

tail 用法

n显示后面多少行,f动态跟踪显示

 

 

ls -l用法

第1列:

d标示目录-标示普通文件l标示链接文件b标示块设备c表示串行端口设备s标示套接字文件

r读w写x执行,前3位所有者user权限,中间3位所属组权限最后3位其他非本群组权限。

 

第2列:

Inode,这个数值与目录下有多少一级子目录有关系。

第3列:所有者

第4列:所述组

第5列:文件大小

第6、7、8列:修改日期

第9列:文件名文件名

 

chmod用法

-R表示级联更改

可用数字表示r=4,w=2,x=1

可用缩写表示u=rwx,g=rwx,o=rwx ;u-x,a-x

root用户,默认一个目录权限为755,一个文件默认权限为644,普通用户登录一个目录权限是775,一个文件权限是664

umask用法

例如目录最大权限777文件最大权限666,Umask设置后需要减掉的权限。

例如一般使用者为umask 002,默认为0022(前面那1位是特殊权限位),因为写权限11分重要。

创建后目录权限为775,文件权限为664

 

chown用法

-R级联更改

EXAMPLES

chown root /u

Change the owner of /u to "root".

 

chown root:staff /u

Likewise, but also change its group to "staff".

 

chgrep用法

EXAMPLES

chgrp staff /u

Change the group of /u to "staff".

 

chgrp -hR staff /u

Change the group of /u and subfiles to "staff".

chattr用法

+-=分别为增加、减少、设定

A:增加该属性后,文件或目录的atime将不可被修改

S:增加该属性后,会将数据同步写入磁盘中

a:增加该属性后,只能追加不能删除,非root用户不能设定该属性

c:自动压缩改文件,读取时会自动解压

i:增加后,使文件不能被删除、重命名、设定软连接、写入、新增数据。

常用的有a和i两个选项。

 

root@cs1w1 root]# chattr +i 111111111111111111111111111111111111

[root@cs1w1 root]# lsattr

-------------e- ./env.log

-------------e- ./install.log.syslog

-------------e- ./aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

-------------e- ./install.log

-------------e- ./456

-------------e- ./lvm

-------------e- ./cs1w1.pub

----i--------e- ./111111111111111111111111111111111111

lsattr: Operation not supported While reading flags on ./11link

-------------e- ./111

-------------e- ./sshd_config

-------------e- ./lvmdump-cs1w1-20160714133655.tgz

-------------e- ./anaconda-ks.cfg

[root@cs1w1 root]# rm -rf 111111111111111111111111111111111111

rm: cannot remove `111111111111111111111111111111111111': Operation not permitted

[root@cs1w1 root]#

 

 

[root@cs1w1 root]# chattr -i 111111111111111111111111111111111111

[root@cs1w1 root]# rm -rf 111111111111111111111111111111111111

 

 

 

[root@cs1w1 root]# chattr +a aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/

 

 

 

[root@cs1w1 root]# lsattr

-------------e- ./env.log

-------------e- ./install.log.syslog

-----a-------e- ./aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

-------------e- ./install.log

-------------e- ./456

-------------e- ./lvm

-------------e- ./cs1w1.pub

-------------e- ./111

-------------e- ./sshd_config

-------------e- ./lvmdump-cs1w1-20160714133655.tgz

-------------e- ./anaconda-ks.cfg

 

[root@cs1w1 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa]# rm -rf view

rm: cannot remove `view': Operation not permitted

[root@cs1w1 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa]# touch aa

[root@cs1w1 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa]# echo "test " >> aa

[root@cs1w1 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa]# cat aa

test

 

[root@cs1w1 root]# chattr -a aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/

[root@cs1w1 root]# cd aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/

[root@cs1w1 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa]# ls

aa view

[root@cs1w1 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa]# rm -rf *

[root@cs1w1 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa]# ls

[root@cs1w1 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa]#

 

[root@cs1w1 root]# chattr +Asaci aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/

[root@cs1w1 root]# lsattr

-------------e- ./env.log

-------------e- ./install.log.syslog

s---ia-Ac----e- ./aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

-------------e- ./install.log

-------------e- ./456

-------------e- ./lvm

-------------e- ./cs1w1.pub

-------------e- ./111

-------------e- ./sshd_config

-------------e- ./lvmdump-cs1w1-20160714133655.tgz

-------------e- ./anaconda-ks.cfg

 

[root@cs1w1 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa]# mkdir aa

mkdir: cannot create directory `aa': Permission denied

[root@cs1w1 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa]# touch aa

touch: cannot touch `aa': Permission denied

 

 

 

[root@cs1w1 root]# chattr -Asaci aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/

[root@cs1w1 root]# cd aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/

[root@cs1w1 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa]# ls

[root@cs1w1 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa]# mkdir aa

[root@cs1w1 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa]# touch bb

[root@cs1w1 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa]# rm -rf aa bb

[root@cs1w1 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa]# ls

[root@cs1w1 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa]#

 

 

lsattr用法

-a类似与ls -a连同隐藏文件一同列出

-R连同子目录数据一同列出

特殊权限之suid

针对二进制可执行文件,在执行阶段具有文件所有者的权限。创建u+s,取消u-s

[root@cs1w1 root]# su - apugyt

[apugyt@cs1w1 ~]$ ls -l /root/

ls: cannot open directory /root/: Permission denied

[apugyt@cs1w1 ~]$ exit

logout

[root@cs1w1 root]# chmod u+s /bin/ls

[root@cs1w1 root]# ls -l /bin/ls

-rwsr-xr-x. 1 root root 117024 Nov 22 2013 /bin/ls

[root@cs1w1 root]# su - apugyt

[apugyt@cs1w1 ~]$ ls -l /root/

total 0

[apugyt@cs1w1 ~]$

特殊权限之sgid

设置set gid后,执行该文件的用户会临时以改文件所属组的身份执行。创建g+s,取消g-s

[root@cs1w1 root]# mkdir /tmp/test

[root@cs1w1 root]# chmod 777 /tmp/test/

[root@cs1w1 root]# ls -ld /tmp/test/

drwxrwxrwx 2 root root 4096 Jul 15 09:34 /tmp/test/

[root@cs1w1 root]# chmod g+s /tmp/test/

[root@cs1w1 root]# ls -ld /tmp/test/

drwxrwsrwx 2 root root 4096 Jul 15 09:34 /tmp/test/

[root@cs1w1 root]# su - apugyt

[apugyt@cs1w1 ~]$ cd /tmp/

[apugyt@cs1w1 tmp]$ cd test/

[apugyt@cs1w1 test]$ ls

[apugyt@cs1w1 test]$ touch 1.txt

[apugyt@cs1w1 test]$ ls

1.txt

[apugyt@cs1w1 test]$ ll

total 0

-rw-rw-r-- 1 apugyt root 0 Jul 15 09:35 1.txt

[apugyt@cs1w1 test]$ exit

logout

[root@cs1w1 root]# chmod g-s /tmp/test/

[root@cs1w1 root]# su - apugyt

[apugyt@cs1w1 ~]$ cd /tmp/

[apugyt@cs1w1 tmp]$ ls

test yum.log

[apugyt@cs1w1 tmp]$ ll

total 4

drwxrwxrwx 2 root root 4096 Jul 15 09:35 test

-rw-------. 1 root root 0 Jul 12 10:16 yum.log

[apugyt@cs1w1 tmp]$ cd test/

[apugyt@cs1w1 test]$ ls

1.txt

[apugyt@cs1w1 test]$ touch 2.txt

[apugyt@cs1w1 test]$ ll

total 0

-rw-rw-r-- 1 apugyt root 0 Jul 15 09:35 1.txt

-rw-rw-r-- 1 apugyt apugyt 0 Jul 15 09:35 2.txt

[apugyt@cs1w1 test]$

特殊权限之sticky_bit

防删除位,即使对目录拥有写权限,也不能删除其他用户的文件,创建+t,取消-t

[root@cs1w1 root]# ls -ld /tmp/

drwxrwxrwt. 4 root root 4096 Jul 15 09:34 /tmp/

[root@cs1w1 root]# useradd user2

[root@cs1w1 root]# passwd user2

Changing password for user user2.

New password:

BAD PASSWORD: it is based on your username

Retype new password:

passwd: all authentication tokens updated successfully.

[root@cs1w1 root]# su - apugyt

[apugyt@cs1w1 ~]$ touch /tmp/apugyt.txt

[apugyt@cs1w1 ~]$ exit

logout

[root@cs1w1 root]# su - user2

[user2@cs1w1 ~]$ rm -rf /tmp/apugyt.txt

rm: cannot remove `/tmp/apugyt.txt': Operation not permitted

[user2@cs1w1 ~]$ exit

logout

[root@cs1w1 root]# chmod o-t /tmp/

[root@cs1w1 root]# ll /

total 106

-rwSr--r-- 1 root root 0 Jul 15 09:30 aa

dr-xr-xr-x. 2 root root 4096 Jul 13 07:37 bin

dr-xr-xr-x. 5 root root 1024 Jul 12 10:24 boot

drwxr-xr-x. 2 root root 4096 Nov 22 2013 cgroup

drwxr-xr-x 19 root root 3740 Jul 15 05:46 dev

drwxr-xr-x. 100 root root 12288 Jul 15 09:38 etc

drwxr-xr-x. 4 root root 4096 Jul 15 09:38 home

dr-xr-xr-x. 11 root root 4096 Jul 12 10:22 lib

dr-xr-xr-x. 9 root root 12288 Jul 13 07:37 lib64

drwx------. 2 root root 16384 Jul 12 10:16 lost+found

drwxr-xr-x. 2 root root 4096 Sep 23 2011 media

drwxr-xr-x 2 root root 0 Jul 15 05:46 misc

drwxr-xr-x. 2 root root 4096 Sep 23 2011 mnt

drwxr-xr-x 2 root root 0 Jul 15 05:46 net

drwxr-xr-x. 3 root root 4096 Jul 12 10:23 opt

dr-xr-xr-x 110 root root 0 Jul 15 05:45 proc

dr-xr-x---. 3 root root 4096 Jul 15 09:31 root

dr-xr-xr-x. 2 root root 12288 Jul 13 07:37 sbin

drwxr-xr-x. 2 root root 4096 Jul 12 10:17 selinux

drwxr-xr-x. 2 root root 4096 Sep 23 2011 srv

drwxr-xr-x 13 root root 0 Jul 15 05:45 sys

drwxrwxrwx. 4 root root 4096 Jul 15 09:39 tmp

drwxr-xr-x. 13 root root 4096 Jul 12 10:17 usr

drwxr-xr-x. 20 root root 4096 Jul 12 10:22 var

[root@cs1w1 root]# su - user2

[user2@cs1w1 ~]$ cd /tmp/

[user2@cs1w1 tmp]$ ls

apugyt.txt test yum.log

[user2@cs1w1 tmp]$ rm -rf apugyt.txt

[user2@cs1w1 tmp]$

软链接和硬链接

 

软链接:

1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式

2.软链接可以 跨文件系统 ,硬链接不可以

3.软链接可以对一个不存在的文件名进行链接

4.软链接可以对目录进行链接

5.软链接占用Inode

 

 

 

1.硬链接,以文件副本的形式存在。但不占用实际空间。

2.不允许给目录创建硬链接

3.硬链接只有在同一个文件系统中才能创建

4.不占用inode和空间

 

 

 

常用项

f 如果目标文件存在会强制移除

s软连接

d硬链接

 

 

 

#软链接可以链接跨文件系统

 

#链接目录、文件

 

ln -s /mnt/aaa /opt/aa

 

ln -s /opt/ /mnt

 

 

 

#硬链接只允许在自己的文件系统

 

ln -d /opt/aaa /opt/bb

用户名文件

[root@cs1w1 ~]# cat /etc/passwd | head -n 3

root    :    x    :    0    :    0    :    root    :    /root    :    /bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

 

第1字段,用户名,可以使大小写字母、数字、减号(不能出现在首位)、点以及下划线,其它不合法。

第2字段,早期unix存放在这里,基于安全因素,放在/etc/shadow中了。

第3字段,uid用户身份,0是root,1-499系统保留作为管理账号,普通用户标示从500开始。

第4字段,组标示,对应group中一条记录

第5字段,注释说明

第6字段,用户家目录

第7字段,指定默认的shell程序,启动后会启动一个进程,用来将指令传递给操作系统内核。

 

 

密码文件

[root@cs1w1 ~]# cat /etc/shadow | head -n 3

root    :    $6$dPgogaO9$xKdBg64FWHJJcutWDtyxuF465Ri.TsNHTMhYpUUPTCcTZPhAhypNmLdBsbCwdWY621bocFWJn3y1eFNR.x.xz1:16995    :    0    :    99999    :    7    :    :    :

bin:*:15980:0:99999:7:::

daemon:*:15980:0:99999:7:::

9个字段含义:

第1字段,跟/etc/passwd用户名对应

第2字段,真正的加密过的密码

第3字段,从1970年1月1日到上次更改密码的日期。

第4字段,过多少天才可以更改密码,默认0不限制

第5字段,多天后密码到期,默认99999不限制

第6字段,密码到期警告期限

第7字段,密码已经到期,到期前没修改,再过几天就锁定

第8字段,生命周期,在这个日期前可以使用,到期后作废。

第9字段,作为保留用的,没有什么意义

 

 

 

 

 

增加删除用户组

Groupadd用法

G指定gid

groupdel后面指定用户组

 

 

增加删除用户

Useradd用法

u自定义uid

U创建一个和用户一样的组

N创建用户没有同样的组

g加入已经存在的某个组

d自定义用户家目录

m创建家目录

M不建立家目录

S自定义shell

L指定创建的用户不加入log数据库

 

Userdel用法

R删除账户时候带账户家目录一起删除

 

 

 

Usermod修改用户属性

Usermod用法

u更改用户uid

G更改用户属组,也可以跟组id

d更改用户家目录

S更改用户shell

 

 

Passwd修改用户密码

Passwd用法

-stdin从标准输入设置密码,适用于脚本

-d删除密码

-e设置密码过期

-x设置密码最大生命周期

-w设置密码过期提示周期

 

mkpasswd用法

生成密码,安装一个expect包才可以使用

-s指定特殊字符个数

-d指定数字个数

-l指定密码个数

 

su切换用户

Su用法

-需要加这个

C指定执行命令

su – apugyt –c "touch /home/apugyt/apugytsuswitchtest"

 

 

sudo详解

普通用户登录无法执行一些命令操作,如果告知给普通用户root密码,有风险。可以修改解决sudoers配置文件解决这个问题,允许普通用户执行系统中的一些命令。

[apugyt@localhost ~]$ yum install

Loaded plugins: fastestmirror

You need to be root to perform this command.

[apugyt@localhost ~]$ sudo yum install

apugyt is not in the sudoers file. This incident will be reported.

 

 

visudo编辑配置文件,添加普通用户就可以了。可以明确用户名,允许切换的组,Ip,允许的命令

 

## Allow root to run any commands anywhere

root ALL=(ALL) ALL

apugyt ALL=(ALL) ALL

 

 

设置完成后sudo 加命令,输入自己的密码就可以运行了

 

 

[apugyt@localhost root]$ sudo ls

[sudo] password for apugyt:

 

 

 

[apugyt@localhost root]$ sudo ls

? anaconda-ks.cfg apugytswitchtest yum.conf

[apugyt@localhost root]$

 

 

 

 

如果有多个普通用户一次一次添加麻烦,可以直接开启wheel组。普通用户加入这个wheel组就可以了。

## Allows people in group wheel to run all commands

%wheel ALL=(ALL) ALL

 

 

查看这个测试账户的组

[apugyt@localhost ~]$ id apugyt

uid=1000(apugyt) gid=1000(apugyt) groups=1000(apugyt),10(wheel)

[apugyt@localhost ~]$

 

重新测试ok

[apugyt@localhost home]$ yum install lsof

Loaded plugins: fastestmirror

You need to be root to perform this command.

[apugyt@localhost home]$ sudo yum install lsof

Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile

* base: ftp.sjtu.edu.cn

* extras: mirrors.163.com

* updates: mirrors.163.com

Package lsof-4.87-4.el7.x86_64 already installed and latest version

Nothing to do

[apugyt@localhost home]$

fdisk用法

fdisk用法

l指定某个盘

w写入

p主分区

e扩展分区

一个磁盘只能有4个主分区,或者3个主分区,一个扩展分区,然后是逻辑分区。

parted用法

EXAMPLES:

加标签

parted /dev/sdb mklabel gpt

分区

parted /dev/sdb mkpart PartedTest 0% 100%

格式化文件系统

mkfs.ext4 /dev/sdb1

 

 

partx用法

 

常用

partx –a /dev/sdb

删除

partx –d /dev/sdb

列出

partx –l /dev/sdb

 

 

 

NAME

partx - telling the kernel about presence and numbering of on-disk partitions.

 

mke2fs用法

mke2fs用法

-b设定每个区块占用空间大小,目前支持1024、2048以及4096Bytes每个块。

-N指定inode数量

-c创建文件系统之前检查坏块

-L指定分区标签

-D使用direct IO

-t文件系统类型

 

 

 

 

[root@localhost ~]# mke2fs -t ext4 -N 1000 -c -L ext4mke2fstest -D -b 2048 /dev/sdb1

mke2fs 1.42.9 (28-Dec-2013)

Filesystem label=ext4mke2fstest

OS type: Linux

Block size=2048 (log=1)

Fragment size=2048 (log=1)

Stride=0 blocks, Stripe width=0 blocks

5120 inodes, 10485248 blocks

524262 blocks (5.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=278921216

640 block groups

16384 blocks per group, 16384 fragments per group

8 inodes per group

Superblock backups stored on blocks:

    16384, 49152, 81920, 114688, 147456, 409600, 442368, 802816, 1327104,

    2048000, 3981312, 5619712, 10240000

 

Checking for bad blocks (read-only test): done

Allocating group tables: done

Writing inode tables: done

Creating journal (32768 blocks): done

Writing superblocks and filesystem accounting information: done

 

 

 

 

 

 

 

 

[root@localhost ~]# mount -t ext4 /dev/sdb1 /mnt/

[root@localhost ~]# stat /mnt/

File: '/mnt/'

Size: 2048     Blocks: 4 IO Block: 2048 directory

Device: 811h/2065d    Inode: 2 Links: 3

Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)

Context: system_u:object_r:unlabeled_t:s0

Access: 2016-07-14 05:44:16.000000000 -0400

Modify: 2016-07-14 05:44:16.000000000 -0400

Change: 2016-07-14 05:44:16.000000000 -0400

Birth: -

 

e2label用法

查看分区标签

[root@localhost ~]# e2label /dev/sdb1

ext4mke2fstest

[root@localhost ~]#

mount用法

如果需要开机启动建议mount分区的label或者uuid哟。

UUID指定挂载文件系统的uuid

LABEL指定挂载文件系统的的标签

a挂载所有fstab中指定的文件系统

o指定其他选项,如-o loop

t指定文件系统类型

av还可以检查fstab配置文件中指定挂载的文件系统

 

 

[root@localhost ~]# blkid

/dev/sdb1: LABEL="ext4mke2fstest" UUID="90ceec7f-bf30-44b3-af46-a24c091156ab" TYPE="ext4"

/dev/sr0: UUID="2015-12-09-23-03-16-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"

/dev/sda1: UUID="23ef456b-700c-421a-94b4-4aa7636c5ec9" TYPE="xfs"

/dev/sda2: UUID="wpNLhW-vVjP-s4wi-kXMr-VaD4-A74G-xbhsZN" TYPE="LVM2_member"

/dev/mapper/centos-root: UUID="6f348a94-c270-42e9-96bd-b6166d689ba2" TYPE="xfs"

/dev/mapper/centos-swap: UUID="992c1fae-1daa-4297-adf8-546548fa0769" TYPE="swap"

/dev/mapper/centos-home: UUID="48398901-c2a7-4278-894b-5b66c707d4ec" TYPE="xfs"

 

 

 

 

[root@localhost ~]# mount UUID="90ceec7f-bf30-44b3-af46-a24c091156ab" /mnt/

 

[root@localhost ~]# mount LABEL=ext4mke2fstest /mnt/

 

umount用法

l强制卸载

分区表fstab

[root@localhost ~]# cat /etc/fstab

 

#

# /etc/fstab

# Created by anaconda on Tue Jul 12 03:20:27 2016

#

# Accessible filesystems, by reference, are maintained under '/dev/disk'

# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#

/dev/mapper/centos-root / xfs defaults 0 0

UUID=23ef456b-700c-421a-94b4-4aa7636c5ec9 /boot xfs defaults 0 0

/dev/mapper/centos-home /home xfs defaults 0 0

/dev/mapper/centos-swap swap swap defaults 0 0

[root@localhost ~]#

 

第1列:分区标示,label/uuid/分区名字都ok

第2列:挂载点

第3列:分区类型

第4列:挂载参数,一般写defaults

第5列:是否被dump备份,1是,0不是

第6列:0不自检磁盘,1和2都检测,1先检测

 

第4列参数详解:

async磁盘和内存不同步,每隔一段时间吧内存数据写入磁盘

sync时时同步内存和磁盘中数据

auto/noauto:开机自动挂载/不自动挂载

ro:只读权限

rw:可读可写权限

exec/noexec:允许/不允许可执行文件执行

user/nouser:是否允许root用户外的其他用户挂载分区,一般Nouser

suid/nosuid:允许/不允许分区有suid属性,一般nosuid

usrquota:启用磁盘配额

grquota:启动群组磁盘配额模式

w用法

第一行显示当前时间,系统运行时间,登陆用户数量,系统负载1分钟、5分钟、15分钟,值超过cpu数量证明系统压力大。

tty为显示器

pts为远程终端。

 

[root@cs1w1 root]# w

12:13:05 up 6:27, 3 users, load average: 0.00, 0.00, 0.00

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

root tty1 - 12:09 3:54 0.00s 0.00s -bash

root pts/0 192.168.211.1 05:47 36.00s 0.55s 0.55s -bash

root pts/1 192.168.211.1 07:13 0.00s 0.02s 0.00s w

[root@cs1w1 root]#

 

 

有可能远程服务器本地显示器tty没有退出,可以通过kill进程关闭本地tty。

[root@cs1w1 root]# ps -ef | egrep -i tty

UID PID PPID C STIME TTY TIME CMD

root 1338 1 0 05:46 tty2 00:00:00 /sbin/mingetty /dev/tty2

root 1340 1 0 05:46 tty3 00:00:00 /sbin/mingetty /dev/tty3

root 1342 1 0 05:46 tty4 00:00:00 /sbin/mingetty /dev/tty4

root 1344 1 0 05:46 tty5 00:00:00 /sbin/mingetty /dev/tty5

root 1349 1 0 05:46 tty6 00:00:00 /sbin/mingetty /dev/tty6

root 4293 4245 0 12:09 tty1 00:00:00 -bash

root 4390 2363 0 12:17 pts/1 00:00:00 egrep -i tty

 

[root@cs1w1 root]# kill -9 4293

-bash: kill: (4293) - No such process

[root@cs1w1 root]# ps -ef | egrep -i tty

UID PID PPID C STIME TTY TIME CMD

root 1338 1 0 05:46 tty2 00:00:00 /sbin/mingetty /dev/tty2

root 1340 1 0 05:46 tty3 00:00:00 /sbin/mingetty /dev/tty3

root 1342 1 0 05:46 tty4 00:00:00 /sbin/mingetty /dev/tty4

root 1344 1 0 05:46 tty5 00:00:00 /sbin/mingetty /dev/tty5

root 1349 1 0 05:46 tty6 00:00:00 /sbin/mingetty /dev/tty6

root 4393 1 0 12:17 tty1 00:00:00 /sbin/mingetty /dev/tty1

root 4395 2363 0 12:17 pts/1 00:00:00 egrep -i tty

[root@cs1w1 root]#

 

[root@cs1w1 root]# w

12:20:13 up 6:34, 2 users, load average: 0.00, 0.00, 0.00

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

root pts/0 192.168.211.1 05:47 3:01 0.55s 0.55s -bash

root pts/1 192.168.211.1 07:13 0.00s 0.03s 0.00s w

[root@cs1w1 root]#

 

 

vmstat详解

vmstat用法

6部分。

 

procs显示进程相关信息

r:表示运行和等待cpu时间片的进程数。如果长期大于cpu个数,说明cpu不够用了。

b:等待资源进程数。例如等待I/O、内存等。如果长时间大于1,需要关注下。

 

memory内存相关信息

swpd切换到交换分区中的内存数量

free当前空闲的内存数量

buff缓冲大小,即将写入磁盘的。

cache缓存大小,从磁盘中读取的。

 

swap内存交换情况

si:交换区写入到内存的数据量

so:由内存写入到交换区的数据量

 

io磁盘使用情况

bi:从块设备读取数据的量

bo:从块设备吸入数据的量

 

system显示采集间隔内发生的中断次数

in:表示在某一时间间隔中观测到的每秒设备中断数

cs:每秒上下文切换次数

 

CPU显示cpu的使用状态

us:显示用户下所花费cpu时间的百分比

sy:显示系统花费cpu时间百分比

id:cpu处于空闲状态的时间百分比

wa:表示I/O等待所占用cpu时间百分比

st:被偷走的cpu所占百分比

 

 

[root@cs1w1 root]# vmstat

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----

r b swpd free buff cache si so bi bo in cs us sy id wa st

0 0 0 767452 43688 86112 0 0 5 1 12 14 0 0 100 0 0    

[root@cs1w1 root]#

 

关注rbwa列就可以了。

 

 

top动态查看负载

top用法

c可以查看进程命令

k提示kill掉哪个进程的Pid

其中RES可以查看进程占用内存大小。

top –bn1非动态打印系统资源使用情况,可以用在shell脚本中。

 

[root@dntodu001 ~]# top

top - 16:39:36 up 6 days, 22:04, 10 users, load average: 27.39, 28.05, 27.28

Tasks: 3406 total, 39 running, 3367 sleeping, 0 stopped, 0 zombie

Cpu(s): 20.1%us, 4.3%sy, 0.0%ni, 69.3%id, 4.8%wa, 0.1%hi, 1.5%si, 0.0%st

Mem: 264279036k total, 44741164k used, 219537872k free, 365716k buffers

Swap: 33554424k total, 0k used, 33554424k free, 29961196k cached

 

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

38413 root 20 0 21.6g 933m 13m S 148.0 0.4 514:12.13 java

98366 oracle -2 0 28.1g 22g 22g S 72.4 8.9 159:21.52 oracle

98300 oracle -2 0 28.1g 22g 22g R 51.7 8.9 162:38.06 oracle

98374 oracle -2 0 28.1g 22g 22g S 45.2 8.9 162:46.30 oracle

98287 oracle -2 0 28.1g 22g 22g S 42.0 8.9 162:15.72 oracle

98370 oracle -2 0 28.1g 22g 22g R 41.7 8.9 159:16.79 oracle

98415 oracle 20 0 28.1g 178m 168m R 28.8 0.1 108:06.83 oracle

17592 oracle 20 0 28.1g 23g 23g S 25.9 9.4 82:11.82 oracle

17711 oracle 20 0 28.1g 23g 23g S 25.9 9.4 81:53.08 oracle

17696 oracle 20 0 28.1g 23g 23g S 25.5 9.4 81:56.69 oracle

 

sar命令

sar用法

sar –n DEV显示网卡流量,rx表示进,tx表示出

sar –n EDEV    Network interfaces (errors)

sar –b        I/O and transfer rate statistics

sar –r        Memory utilization statistics

sar -u [ ALL ]    CPU utilization statistics

安装sysstat这个包就有sar命令。

sar数据文件放在/var/log/sa下,加日期的需要用sar -f查看,不加日期的可以直接cat。

 

 

 

free查看内存

一般查看剩余看第2行。因此系统分配物理内存给缓存用来给程序使用。如果程序不用就是空闲的。所以查看那个比较靠谱。

[root@dntodu001 ~]# free -g

total used free shared buffers cached

Mem: 252 73 178 0 0 58

-/+ buffers/cache: 14 237

Swap: 31 0 31

[root@dntodu001 ~]#

 

 

ps查看进程

STAT进程状态:

D不能中断,通常为IO

R正在运行的进程

S已经中断,系统大部分进程都在这个状态

T,已经停止或暂停的进程

Z僵尸进程,占系统一点资源,少了没问题,多了就有问题了。

<高优先级进程

N低优先级进程

L在内存中被锁了内存分页

s主进程

l多线程进程

+在前台运行的进程

 

df用法

i显示inode

k显示1k block

m显示1M block

h显示任性化

T显示文件系统

一般用df -hT

 

 

 

du用法

b显示bytes

k显示kB

m显示mB

h人性化显示

s显示聚合

S不包括子目录

一般用du –sh

 

stat用法

 

Atime:读取或执行文件时更改的。

Mtime:吸入文件时随文件内容更改而更改。

Ctime::写入文件、更改所有者、权限或链接设置时随inode的内容更改而更改的。

这3个time属性都在inode中。如果指定了文件系统noatime参数,Atime不一定在访问后修改。Mtime改了inode一定改,既然inode改了,ctime也得跟着改。

 

lsof用法

EXAMPLES:

查找本地主机使用端口范围1-1024的进程。

 

 

NAME

lsof - list open files

 

tree用法

EXAMPLES:

 

NAME

tree - list contents of directories in a tree-like format.

 

 

pstree用法

使用示例:

 

 

pstree - display a tree of processes

selinux用法

获取状态

getenforce

设置临时关闭

setenforce 0

配置文件位置

/etc/selinuc/config

 

 

# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

# enforcing - SELinux security policy is enforced.

# permissive - SELinux prints warnings instead of enforcing.

# disabled - No SELinux policy is loaded.

SELINUX=disabled

# SELINUXTYPE= can take one of these two values:

# targeted - Targeted processes are protected,

# mls - Multi Level Security protection.

SELINUXTYPE=targeted

 

 

 

 

 

cron计划任务

crontab用法

-u指定某个用户,不加-u为当前用户

-e制定计划任务,实际上编辑/var/spool/cron/username文件

-l列出计划任务

-r删除计划任务

列出计划任务

crontab –l

删除计划任务

crontab –r

服务查看、启停

service crond statusstopstart

从左到右,分、时、日、月、周

 

 

示例:没隔一分钟输出hello,world到/root/目录下的cron-test.log文件中。

 

iptables详解

3张表

filter用于过滤包,是系统预设的表,应用最多。里面3个链,input用于进入本机的包,output用于本机出去的包,forward用于跟本机无关的包。

 

nat用于网络地址转换,里面3个链,prerouting用于在包到达防火墙时改变它的目的地址。output改变本地产生包的目的地址,postrouting用于在包离开防火墙时改变源地址。

 

mangle用于给数据包打标记。几乎不怎么用。除非想成为一个高级网络工程师。

 

查看规则以及清除规则:

#iptables –t filter –nvL

 

选项:

#-t后面跟表明,-n不针对ip反解析主机名,-L标示列出,-v标示列出详细信息

#-A往后增加

#-D删除

#-I,往前插入

#-p指定协议,可以使tcp,udp或者icmp

#-dport跟p一起使用,目标端口

#-s指定源ip

#-d指定目的ip

#-j跟动作,accept允许,drop丢掉,reject拒绝包,MASQUERADE伪装

#-i指定网卡

#-o跟设备名

#--line-numbers显示规则号码

#-P表示预设策略

#–F清除全部规则,

# -Z包以及流量计数器置零

 

注意事项:

iptables –P input drop一旦设定,必须用iptables –P input accept才能恢复原始状态,-不能使用-F。

 

防火墙服务停掉后,一旦重新设定规则,会自动开启。

 

 

 

 

使用示例:

 

需求:只针对filter表,预设策略input链drop,其它2个链accept,然后针对某个管理ip开通22端口,对所有网段开通80端口和21端口。

 

 

 

 

#备份&恢复

iptables-save >myipt.sh

iptables-restore <myipt.sh

 

 

 

设置nat表上网

需求:1台linux主机2块网卡,1个能上网,1个不行,局域网中还有其它主机与不能上网的主机相连。如何保证也能上网。

#设置内核参数,打开路由转发

#对nas标做了一个IP转发的操作

 

 

 

系统服务

ntsysv图形化配置服务开启或关闭。

 

运行级别说明

# 0 - halt (Do NOT set initdefault to this)

# 1 - Single user mode

# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)

# 3 - Full multiuser mode

# 4 - unused

# 5 - X11

# 6 - reboot (Do NOT set initdefault to this)

 

 

 

查询

chkconfig –list| grep cron

设置级别3关闭

chkconfig –level 3 crond off

设置级别345关闭

chkconfig –level 345 crond off

默认2345开启

chkconfig crond on

删除

chkconfig –del crond

添加

chkconfig –add crond

 

Linux日志

日志配置文件/etc/rsyslog.conf

控制如何日志归档/etc/logrotate.conf

messages是系统核心日志文件,如果服务没有定义日志,该服务产生日志会到这个文件中,每周归档一次。

 

debug有调试信息的,日志信息最多

info一般信息日志,最常用

notice具有重要性的普通条件的信息

warning警告级别

err错误级别,阻止某个功能或模块不能正常工作信息

crit严重级别,阻止系统或整个软件不能正常工作的信息

alert需要立即修改信息

emerg内核崩溃等严重信息

none什么都不记录

 

xargs详解

 

示例:

有些时候过滤后的东西需要传递给后面其它命令执行实现需求,这个时候xargs就派上用场了。

 

比如我想把过滤后的东东拷贝至其它目录,其实我可以进入那个目录然后执行ls,然后是过滤,接着再手工以拷贝那样也可以,只不过太慢了,所以下面一条连续的命令就可以搞定。

 

mkdir pakage && ll | egrep -v 'anaconda-ks.cfg|paka*'| gawk -F' ' '{ print $9 }' | xargs -n1 -i cp {} /root/pakage/

 

 

 

 

把找到不用的文件删除掉,可以这样。

find /root/pakage/* -print | xargs /bin/rm –f

 

 

 

xargs –n1 –I {}类似for循坏,-n1意思是一个一个对象去处理,-i{}把前面的对象使用{}取代。cp {}拷贝前面的对象到tmp目录下{}_bak,名字加_bak。

 

 

 

rsync详解

与cp,scp不同的是rsync工具不但可以本地拷贝,还可以远程拷贝以及同步数据。

 

rsync工具在做数据备份方便非常受欢迎。试想一下,如果有数千万个文件或目录你怎么样制定拷贝计划呢?每一个选项都会占用系统计算时间,每一个选项错误,都会延迟拷贝计划任务进度,所以做拷贝计划前很有必了解rsync每个选项,做个详细测试。

儿。

 

 

 

#拷贝installxxx文件到/tmp的目录命名为aa

rsync -av install.log.syslog /tmp/aa

 

#拷贝本地主机文件800.png到远程主机172的/tmp/目录

rsync -av 800.png 192.168.36.172:/tmp/

 

#拷贝远程主机172中的数据到本地/mnt/目录

rsync -av root@192.168.36.172:/tmp/800.png /mnt/

 

#拷贝本地aa/到cc/注意需要加/斜杠,不加不行哦。

rsync -a aa/ cc/

 

#--no-l,去除软连接,如果源目录中含有软连接,不拷贝哟。

rsync -av --no-l /root/bb/ /root/cc/

 

#-L,把源文件软连接指向的物理文件拷贝到目标目录中。

rsync -avL /root/bb/ /root/cc/

 

#-u,如果目标目录中文件比源文件中新,不会执行同步。

rsync -avu /root/aa/ /root/bb/

 

#-delete,如果目标目录bb/中有源目录aa/中没有的东东,会执行清除目标目录bb/中已有的数据。

rsync -av --delete /root/aa/ /root/bb/

 

#--exclude,用于过滤掉源中不需要拷贝的文件

#--progress,用于观察拷贝进程

rsync -av --progress --exclude="*.txt" /root/aa/ /root/bb/

 

 

find搜索命令

-type类型d目录l链接s套接字c串行设备b块设备f文件

-size +1M大于1M -1M小于1M

-atime +n/-n访问或者执行时间大于/小于n天的文件

-ctime +n/-n写入、更改inode属性(更改所有者、权限或者链接)时间大于/小于n天的文件

-mtime +n/-n:写入时间大于/小于n天的文件

[root@cs1w1 root]# mkdir aa

[root@cs1w1 root]# cd aa/

[root@cs1w1 aa]# ls

[root@cs1w1 aa]# touch aa bb cc

[root@cs1w1 aa]# cd

[root@cs1w1 root]# find /root/aa/ -atime +1

[root@cs1w1 root]# find /root/aa/ -atime -1

/root/aa/

/root/aa/cc

/root/aa/aa

/root/aa/bb

[root@cs1w1 root]# find /root/aa/ -ctime -1

/root/aa/

/root/aa/cc

/root/aa/aa

/root/aa/bb

[root@cs1w1 root]# find /root/aa/ -ctime +1

[root@cs1w1 root]# find /root/aa/ -mtime -1

/root/aa/

/root/aa/cc

/root/aa/aa

/root/aa/bb

[root@cs1w1 root]# find /root/aa/ -mtime +1

[root@cs1w1 root]# find /root/aa/ -name aa

/root/aa/

/root/aa/aa

[root@cs1w1 root]# find /root/aa/ -type d

/root/aa/

[root@cs1w1 root]# find /root/aa/ -type f

/root/aa/cc

/root/aa/aa

/root/aa/bb

[root@cs1w1 root]# find /root/aa/ -type b

[root@cs1w1 root]# find /root/aa/ -type c

[root@cs1w1 root]# find /root/aa/ -type l

[root@cs1w1 root]# find /root/aa/ -type s

[root@cs1w1 root]# cd aa

[root@cs1w1 aa]# ls

aa bb cc

[root@cs1w1 aa]# ln -s cc dd

[root@cs1w1 aa]# ls

aa bb cc dd

[root@cs1w1 aa]# ll

total 0

-rw-r--r-- 1 root root 0 Jul 15 10:29 aa

-rw-r--r-- 1 root root 0 Jul 15 10:29 bb

-rw-r--r-- 1 root root 0 Jul 15 10:29 cc

lrwxrwxrwx 1 root root 2 Jul 15 10:31 dd -> cc

[root@cs1w1 aa]# cd

[root@cs1w1 root]# find /root/aa/ -type l

/root/aa/dd

[root@cs1w1 root]# find /root/aa/ -size -1M

/root/aa/cc

/root/aa/aa

/root/aa/bb

[root@cs1w1 root]# find /root/aa/ -size +1M

[root@cs1w1 root]#

shell中特殊符号用法

*代表0个或多个任意字符

?只代表一个任意的字符

脱意,将shell特殊符号还原为普通字符

$!上条命令中最后名称

^开头

^[^fs]除去

$?上条命令运行成功状态值

;一行运行2个命令

&命令放在后台执行

>重定向

>>追加重定向

2>错误重定向

2>>错误追加重定向

[]代表中间字符中任意一个字符

 

 

;不管command1是否成功都会执行command2

&&只有command1执行成功,command2才会执行,否则不执行

 

||,command1执行成功后command2不执行,否则执行command2

grep&egrep用法

学好正则收益无穷

.标示任意一个字符(包含特殊字符)

*标示零个或多个*前面的字符

.*表示任意个任意字符(包含空行)

+标示1个或多个+前面的字符

?标示0个或1个?前面字符

-c打印符合要求的行数

-n输出符合要求的行同时连同行号一起输出

-v打印不符合要求的行

-A后跟数字,打印符合要求的行以及下面2行

-B后跟数字,打印符合要求的行以及上面2行

-C跟数字,打印符合要求的行以及上下各2行

-r会把目录下面所有文件全部遍历

--color把匹配到的关键字红色标识

--include包含有

#过滤etc目录下含有root的conf文件

 

 

 

#过滤包含root字符的行

#统计包含字符abc的行数

#过滤不包含字符abc的行

 

#过滤包含数字的行

#过滤包含字符abccbd的行以及后面的1行

#过滤包含字符sabc的行以及前面的1行

#过滤不包含数字的行

#过滤不包含#开头的行以及空行

#过滤包含字符a-zA-Z的开头的行

#过滤不包含已数字开头的行

#过滤j与f之间包含任意一个字符或任意一个特殊符号的行

#过滤0个多个包含f的行。

#过滤包含一个字符或空行的行

#过滤包含一个或多个包含ok的行

#过滤包含0个或多个含有o或k或ok的字符的行

#过滤aa目录下包含ok的行

sed用法

s替换

g全局替换

d删除行

r调整位置

-i直接修改文件内容

#将1-2行含有aa替换成test

#将所有行的test字符替换成performance

 

#删除1-11行

#删除含有aa的行

 

 

 

#()标示1个整体,root和bash替换位置

awk用法

截取文件中第1段

自定义字符连接某个段

使用awk内部变量OFS指定连接符

 

匹配含有root的行

 

匹配第1段含有oo的行

 

匹配第3段包含0的行

 

匹配含有root的行,只打印1、3段,匹配第3段含有50的行,打印第1、2、7段。

 

 

 

匹配第3段大于100的行。

匹配第7段不是/sbin/nologin的行。

匹配第3段小于第4段的行

匹配第3段大于5,并且

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_33671935/article/details/93560480
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-05-31 00:19:05
  • 阅读 ( 1364 )
  • 分类:Linux

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢