发行版介绍
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文件来执行相应脚本系统初始化。
-
执行系统初始化脚本/etc/rc.d/rc.sysinit
-
执行/etc/rc.d/rc脚本
-
执行用户自定义/etc/rc.d/rc.local
-
完成任务后,启动终端/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,并且
原文链接:https://blog.csdn.net/weixin_33671935/article/details/93560480
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
- 发表于 2021-05-31 00:19:05
- 阅读 ( 1364 )
- 分类:Linux