LINUX笔记
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LINUX笔记相关的知识,希望对你有一定的参考价值。
1.有关inode知识小结:
*(1)磁盘分区格式化为ext4文件系统后会生成一定数量的inode和block.
(2)inode是索引节点,作用时存放文件的属性信息以及作为文件的索引(指向文件的实体)
*(3)ext3/etx4文件系统的block存放的时文件的实际内容
(4)inode时一块存储空间,centos6非启动分区inode默认大小时256字节,centos5是128字节;
(5)inode是一串数字,不同文件对应的inode(一串数字)在文件系统里是唯一的;
(6)inode相同的文件,互为硬链接文件;
*(7)一个文件创建后至少要占用一个inode和一个block;
(8)如果一个文件很大,可能占用多个block;
(9)如果文件很小,至少占用一个,并且剩余空间不能使用;
(10)inode大小和总量查看:
1041 dumpe2fs /dev/sda3 |egrep -i "block size|inode size"
1042 dumpe2fs /dev/sda3 |egrep -i "block count|inode count"
(11)查看inode的总量和使用量命令df -i
(12)如何生成及指定inode大小:
mkfs.ext4 -b 2045 -l 256 /dec/sdb
2.有关Block知识小结:
(1):磁盘读取数据是按Block为单位读取的;
(2):一个文件可能占用多个block,每读取一个block就会消耗一次磁盘I/O
(3):如果要提升磁盘IO性能,那么就要尽可能一次性读取数据尽量的多;
(4):一个block只能存放一个文件的内容,无论内容多小;
(5):block并非越大越好。block太大对于小文件存放就会浪费磁盘空间
(6)block设置也是格式化分区时候:
mkfs.ext4 -b 2048 -l 256 /dev/sdb
(7)文件较大时,block设置大一些会提升磁盘访问磁盘访问效率;
(8)ext3/ext4文件一般设置为4k
3.Linux文件删除的原理
1.静态文件:Linux系统下,在没有进程调用的一个文件,删除所有与之相应的硬链接,就是删除文件
2.动态文件:先杀掉进程后,在删除所有的硬链接
2.文件删除:
i_link 文件的硬链接数量
i_count 引用计数(有一程序使用i_count加1)
3.文件删除的条件:
i_link=0并且i_count=0
4.硬链接文件的小结:
5.一个新硬盘刚装上电脑上怎么挂载?
1.在安装硬盘后:
fdisk -l
mkfs -t ext /dev/sdb
tune2fs -c -1 /dev/sdb
mount -t ext4 -o loop,defaults /dev/sdc /app/log
2.dd if=/dev/zero of=/opt/sbd1 bs=4096 count=100
mkfs -t ext4 /opt/sdb1
mkdir /app/log -p
mount -t ext4 -o loop,defaults /dev/sdb1 /app/log/
df -h 或 cat /proc/mounts
6.正则表达式:
就是处理大量的字符串而定义的一套规则和方法,
1.Linux正则表达式
2.注意事项:
a.linux正则表达式一般以 行 为单位匹配处理的。
b.alias grep=‘grep --color=auto‘,
c.注意字符集,export LC_ALL=C
3.基础正则表达式:
1.^kay 表示以kay为开头的字符
2.$kay 表示以kay为结尾的子符
3.^$ 表示空行
4.. 表示只能代表任意一个字符
5.\ 表示转义符号 \.表示.
6.* 表示
7..*
8.[abc] 表示含有任意abc字符
[^0-9] 表示非数字,这里^表示非
9.a\{n,m\} 表示a重复n到m次
a\{n,\} 表示a至少重复n次
a\{,m\} 表示a至多重复m次
4.扩展正则表达式: extended regula
1.+ 重复一个或一个以上前面的字符;
2.? 重复0个或一个0前面的字符;
3.| 用或的方式查找多个符合的字符串;
4.() 找出“用户组”字符串。
3.实例命令:
1.ifconfig eth0|sed -n ‘2p‘|sed ‘s#^.*dr:##g‘|sed ‘s# B.*$##g‘
2.ifconfig eth0|sed -n ‘2p‘|sed -r ‘s#^.*dr:(.*) Bc.*$#\1#g‘
3.ifconfig eth0|sed -nr ‘2s#^.*dr:(.*) Bc.*$#\1#gp‘
7.通配符:
1.* 代表任意(0到多个)字符;
2.? 代表任意一个字符;
3.
8.调用命令
方法:反引号``或$()
tar zcvf etc-`date +%F`.tar.gz /etc
tar zcvf etc-$(date +%F).tar.gz /etc
9.查找文件命令:
1.which ifconfig
2.whereis ifconfig
3.find / -type f -name ifconfig
4.locate ifconfig
10.关机和重启和注销
1.关机:
shutdown -h now 常用
shutdown -h +1
init 0
halt 常用
halt -p
poweroff
2.重启:
reboot 常用
shutdown -r now 常用
shutdown -r +1
init 6
3.注销:
logout
exit
ctrl+d 常用
11.快捷键
ctrl + a 切换到命令开始
ctrl + e 切换到命令结尾
ctrl + c 终止当前命令或脚本
ctrl + d 退出当前shell,相当于exit,一个个删除光标后字符
ctrl + l 清屏
ctrl + u 清除(剪切)光标之前的内容
ctrl + k 清除(剪切)光标之后的内容
ctrl + y 粘贴剪切的内容
ctrl + r 查找
ctrl + shift +c 命令行复制内容
ctrl + shift +v 命令行粘贴内容(shift+insert)
12.Linux普通文件的读写执行权限说明:
可读r:表示具有读取、阅读文件内容的权限;
可写w:表示具有新增,修改文件内容的权限。
(如果没有r,那么vi无法编辑,强制编辑会覆盖数据,echo可以);
(特别提示:删除文件(修改文件名等)的权限受父目录的权限控制,和文件本身)
可执行x:表示具有执行文件的权限(1.文件本身要能够执行;2.普通用户同时还需要具备r的权限才能;3.root只要有r就能执行。)
13.Linux文件夹的权限
可读r:表示具有浏览目录下面文件及子目录的权限;即ls dir.(不能进入目录里,即无法cd dir)
如果没有x权限,ls列表是可以看到所有我呢见名。但是会提示无权访问目录下的文件;
如果ls -l列表,所有的属性会带问号,也会提示无权访问目录下文件,但是可以看到所有文件名。
可写w:表示具有增加,删除或修改目录内文件名(一般指文件名)的权限(需要x权限配合);
可执行x:表示具有进入目录的权限;例如:cd dir.
但是没有r无法列表,没有w无法新建和删除
SS
改变权限
1.chmod 改变文件权限
-R 递归修改权限
数字修改方法:
字符修改方法:
2.chown
1.:组等于chgrp
[[email protected] shell]# ls -l kay.txt
-rw-r--r--. 1 root incahome 32 8月 7 13:50 kay.txt
[[email protected] shell]# chown kay1.root kay.txt
[[email protected] shell]#
[[email protected] shell]#
[[email protected] shell]# ls -l kay.txt
-rw-r--r--. 1 kay1 root 32 8月 7 13:50 kay.txt
3.chgrp - change group ownership
-R 递归修改权限
[[email protected] shell]# chgrp incahome kay.txt
[[email protected] shell]#
[[email protected] shell]#
[[email protected] shell]# ls -l kay.txt
-rw-r--r--. 1 root incahome 32 8月 7 13:50 kay.txt
14.默认权限分配命令(umask)
1.修改umask: umask 044
2.查看umask
[[email protected] ~]$ sed -n ‘65,69p‘ /etc/bashrc
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 002
else
umask 022
fi
[[email protected] ~]$
3.文件权限计算小结论:
1.创建file:666 - umask = 得出当前;
2.当umask有为奇数的个数:当个数为奇数时:+1.
666
350 -
----------S
316
110 +
----------
426
[email protected] kkk]# umask 350
[[email protected] kkk]#
[[email protected] kkk]# touch c
[[email protected] kkk]# ls -l c
-r---w-rw-. 1 root root 0 8月 8 15:50 c
[[email protected] kkk]# stat c
File: "c"
Size: 0 Blocks: 0 IO Block: 4096 普通空文件
Device: 803h/2051d Inode: 536748 Links: 1
Access: (0426/-r---w-rw-) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2017-08-08 15:50:48.606937065 +0800
Modify: 2017-08-08 15:50:48.606937065 +0800
Change: 2017-08-08 15:50:48.606937065 +0800
[[email protected] kkk]#
4.文件夹就是:777 - umask
15.特殊权限
1.suid知识小结;针对命令和二进制程序的
1.用户或属主对应的前三位权限的x位上如果有s就表示有suid权限。
当x位上没有小写x执行权限的时候,suid的权限显示的是大S.
[[email protected] kkk]# ls -l /etc/passwd
-rw-r--r--. 1 root root 2356 8月 7 15:27 /etc/passwd
[[email protected] kkk]# chmod u+s /etc/passwd
[[email protected] kkk]#
[[email protected] kkk]# ls -l /etc/passwd
-rwSr--r--. 1 root root 2356 8月 7 15:27 /etc/passwd
[[email protected] kkk]# chmod u+x /etc/passwd
[[email protected] kkk]# ls -l /etc/passwd
-rwsr--r--. 1 root root 2356 8月 7 15:27 /etc/passwd
[[email protected] kkk]#
2.setuid(suid)作用是让普通用户可以以root(或其他)的用户角色运行只有root(或其他)账号才能运行的程序或命令,或程序命令对应本来没有权限操作的文件等。
(注意su及sudo的区别),suid为某一个命令设置特殊权限(使用者为所有人)
3.suid修改的是执行的命令passwd,而不是处理的目标文件/etc/passwd.
4.仅对二进制命令程序有效,不能用在shell的类似脚本上。
5.二进制命令程序需要有可执行权限x配合。
6.suid权限仅在程序命令执行过程中有效。
7.执行suid命令的任意系统用户都可以获得该命令程序在执行期间对应的拥有者。
问题:希望kay用户能够删除本来无权删除的文件:
1.sudo给kay授权rm
2.给rm命令设置suid
3.设置上级目录权限
2.sgid
3.粘贴位:(4)
4.特殊权限对应的数字小结:
5.chattr 设置特殊属性
+i 不能添加,删除文件,用来保护文件
lsattr 查看特殊属性
16.网站集群
17.定时任务crond
1.crond 是一个守护进程,一直运行着的。
2.Linux系统
[[email protected] shell]# cd /etc/logrotate.d/
[[email protected] logrotate.d]# ls
cups httpd krb5kdc psacct syslog vsftpd yum
dracut kadmind ppp sssd tomcat6 wpa_supplicant
[[email protected] logrotate.d]# more cups
/var/log/cups/*_log {
missingok
notifempty
sharedscripts
}
[[email protected] logrotate.d]#
3.用户的定时任务:
ctontal
-l list 显示定时任务
-e edit 编辑定时任务的规则
-r (delete user‘s crontab)
-i (prompt before deleting user‘s crontab)
指定用户设置定时任务:
[[email protected] logrotate.d]# crontab -u kay1 -l
no crontab for kay1
[[email protected] logrotate.d]#
基本格式:
[[email protected] spool]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
分 时 天 月 周
特殊符号:
* 每
- 范围 17-19 00 17-19 * * * cmd
, 分隔时段 30 17,18,19 * * * /bin/sh /kay/shell/kay.sh
/n 每单位时间, n数字
at:适合执行一次就结束的工作
[[email protected] logrotate.d]# chkconfig --list atd
atd 0:关闭 1:关闭 2:关闭 3:启用 4:启用 5:启用 6:关闭
crond总结:
1.为定时任务规则加必要的注释;
2.执行shell 脚本任务加/bin/sh
3.定时任务命令或脚本结尾加>/dev/null 2>&1
如果不加,会在/var/spoolpostfix/maildrop/产生太多小文件,导致inode不足。
4.定时任务命令或程序最好写到脚本里执行
5.指定用户下执行相关的定时任务;
6.生产任务程序不要随意随意打印输出信息;
7.定时任务的路径一定要规范路径;
8.配置定时任务规范操作过程。
1.首先在命令行操作成功,然后复制在
企业中工作中调定时任务的方法
1.增加执行任务频率调试任务
代码发布:个人开发坏境----办公测试环境----IDC机房测试环境----IDC正式环境(分组,灰度发布)
2.调整系统时间调试任务(不能直接用于生产环境)
3.通过脚本日志调整服务器
4.通过crond定时任务服务日志调试定时任务(var/log/cron)
crondtab定时任务生产应用问题8箴言
1.系统环境变量问题
2时间变量问题用反斜线\%转义,最好用脚本
18.Linux系统用户和用户组介绍
1.回顾UID:
2.命令:
useradd
userdel
passwd
chage
3./etc/skel/
4./etc/default/useradd
1.查看
[[email protected] ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home -(6)
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
2.修改/etc/default/useradd中配置
1.vim /etc/default/useradd
2.useradd -D
当 -D 选 项 出 现 时 , useradd 秀 出 现 在 的 预
设 值 , 或 是 藉由命 令 列 的 方 式 更 新 预 设
值 。可 用 选 项 为 ∶
-b default_home
定 义 使 用 者 所 属 目 录 的 前 一 个 目
录 。使 用 者 名 称 会 附 加 在
default_home 后 面用 来 建 立 新 使 用 者
的 目 录 。当 然 使 用 -d 后 则 此 选 项 无
效 。
-e default_expire_date
使 用 者 帐 号 停 止 日 期 。
-f default_inactive
帐 号 过 期 几 日 后 停 权 。
-g default_group
新 帐 号 起 始 群 组 名 或 ID 。群 组 名 须
为 现 有 存 在 的 名 称 。群 组 I D 也 须
为 现 有 存 在 的 群 组 。
-s default_shell
使 用 者 登 入 后 使 用 的 shell 名 称 。往
后 新 加 入 的 帐 号 都 将 使 用 此 shell.
5.useradd:
1.与useradd相关文件:
/etc/passwd
/etc/shadow
/etc/group
/etc/gshadow
2.默认行为:
/etc/default/useradd
/etc/login.defs
3.useradd 选项参数:
6.groupadd
-g gid 指定gid
7.passwd:
1.参数:
-x, --maximum=DAYS 密码的最长有效时限(只有根用户才能进行此操作)
-n, --minimum=DAYS 密码的最短有效时限(只有根用户才能进行此操作)
-w, --warning=DAYS 在密码过期前多少天开始提醒用户(只有根用户才能进行此操作)
-i, --inactive=DAYS 当密码过期后经过多少天该帐号会被禁用(只有根用户才能进行此操作)
--stdin
[[email protected] ~]# echo 123456|passwd --stdin kay7
更改用户 kay7 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
2.查看密码:
chage -l kay7
[[email protected] kay]# chage -l kay6
Last password change : Aug 13, 2017
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
[[email protected] kay]#
8.chage 查看或修改账户信息
chage [options] [LOGIN]
-d, --lastday LAST_DAY set date of last password change to LAST_DAY
-E, --expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE
-h, --help display this help message and exit
-I, --inactive INACTIVE set password inactive after expiration
to INACTIVE
-l, --list show account aging information
-m, --mindays MIN_DAYS set minimum number of days before password
change to MIN_DAYS
-M, --maxdays MAX_DAYS set maximim number of days before password
change to MAX_DAYS
-W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS
9.userdel 删除账户
-r 连家目录一起删除 (不要轻易用,删除前要备份)
2.若要删除一个账号:
1.在vim /etc/passwd 账号前加#
2.usermod -s /sbin/nologin user
3.修改账号的过期时间
a.usermode -e "2016/01/01" user
b.chage -E "2016/01/01" user
4.passwd -l 锁定账号密码
10.groupdel 删除用户组
11.usermod 修改用户信息
与useradd一样
12.id print real and effective user and group IDs 打印用户id号和所属组id号
13.w Show who is logged on and what they are doing.
who Show who is logged on
last, lastb - show listing of last logged in users
lastlog - reports the most recent login of all users or of a given user
/var/log/lastlog file
groups - print the groups a user is in
19.Linux切换目录
1.su
1.参数
-, -l, --login
make the shell a login shell 切换到loginuser的环境变量
-c, --command=COMMAND
pass a single COMMAND to the shell with -c
[[email protected] ~]# su - kay -c "touch a.txt"
[[email protected] ~]# ls -l /home/kay/a.txt
-rw-rw-r--. 1 kay kay 0 8月 13 14:36 /home/kay/a.txt
2.su优缺点
2.sudo
画图(19)
1.参数
-l 列出用户在主机上可使用或禁止的命令;
-K 删除时间戳,下个sudo命令要输入命令;
3.visudo edit the sudoers file
1.参数:
-c 检查语法
4.vim /etc/sudoers 中别名
kay1 ALL = (ALL) /bin/rm
User_Alias Host_Alias = (Runas_Alias) Cmnd_Alias
用户别名 主机别名 角色别名 命令别名
Host_Alias FILESERVERS = fs1, fs2
User_Alias ADMINS = jsmith, mikem, %sa(表示sa组)
Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, !/sbin/mii-too(禁止命令,在命令前加!)
Runas_Alias OP = root, oldboy
2.#注意:
1.别名要大写
2.命令要全路径
3.换行加‘\’
20.Linux网络基础
1.OSI7层网络模型
物理层;数据链路层,网络层,传输层,会话层,表示层,应用层。
2.用户
3.DNS域名解析原理:
1.命令
dig
nslookup
host
ping
2.dig @8.8.8.8 www.baidu.com +trace
4.修改主机名的步骤:
第1步.hostname = kay
第2步.vi /etc/sysconfig/network
第3步.vi /etc/hosts
5.Gateway
1.命令:
route -n
netstat -rn
添加网关:route add default gw 10.1.6.250
删除网关:route del default gw 10.1.6.250
6.IP
1.命令
虚拟ip地址(重启就失效):
ifconfig eth0:0 10.1.6.139 netmask 255.255.255.0 up
要想重启不失效:写成配置文件(/etc/sysconfig/network-scripts/eth0:0)
停掉虚拟ip:
ifconfig eth0:0 down
ip的方式配多个ip,辅助IP
21.网络或服务故障排查:
1.ping www.baidu.com
2.traceroute www.baidu.com -n
3.telnet www.baidu.com
nmap
nc
1.防火墙没开
2.80端口没开或不是这端口
4.抓包工具:
linux:
tcpdunp
nmap
windows:
wireshark
sniffer
22.vi 命令
23.Linux磁盘管理
1.企业生产环境主流磁盘的相关信息对比:
企业生产场景普及程度:SAS>SATA>SSD
单位容量对比性能和价格:SSD>SAS>SATA
单位价格购买磁盘容量:SATA>SAS>SSD
2.企业生产工作中磁盘的选型
1.企业级SAS硬盘:
企业里常见的SAS硬盘是15000转/分(这里就是主轴的转数)。
用途:用于提供生产线上的普通对外提供服务的业务服务器;
例如:生产线上的数据库业务,存储业务.图片业务及相关高并发(web http,cache服务),总的来说,如果没有特殊业务,SAS磁盘是生产环境首先的磁盘配置。
2.企业级SATA硬盘:
企业级SATA硬盘,7200-10000转/分,容量为1T,2T,4T,6T;优点是经济实惠,容量大,
用途:用于线下不提供服务的数据存储或者兵法业务访问不是很大业务应用,比如站点程序及数据库,图片的线下备份等
特性:容量性价比高,一般2T的SATA磁盘较佳。
3.SSD固态电子盘:
磁盘选购小结:
a.线上的业务-----用SAS磁盘
b.线下的业务-----用SATA磁盘,磁带库。
c.线上高并发,小容量业务----用SSD磁盘。
d.
24.企业级NFS网络文件共享服务
1.NFS是network file system的缩写,
2.NFS网络文件系统很像window系统的网络共享,安全功能,网络驱动器和Linux系统里的samba服务类似。
3.NFS在企业的应用场景
4.NFS服务端配置步骤:
1.安装软件
2.启动服务(注意先后顺序)
3.设置开机自启动
4.配置nfs服务
5.重新加载服务(优雅重启)
6.检查或测试挂载
5.NFS客户端配置步骤:
6.
以上是关于LINUX笔记的主要内容,如果未能解决你的问题,请参考以下文章