命令总结:
mkdir 创建目录 make directorys(全称)-p(递归)
ls -l(long)d(dieectory)显示目录或文件 全称list。-a(可显示隐藏文件)
ls -F=ls -p(给查看的文件用不同的符号在结尾分类,/是目录,-p主要针对目录的)
ls -h(文件的人性化) -i(文件的索引号)-t(按修改时间排序)-r(翻转排序)
ls -l --time-style=long-iso:查看完整的时间。
。
修改主机名:
1.hostname +主机名(临时修改主机名)。
2.[root@xuexi ~]# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=xuexi(可永久修改主机名)
3.[root@xuexi ~]# vi /etc/hosts(hosts文件里对应的主机名也应更改
date:时间,-s修改时间
cal:显示日历
ping:-c次数-s包的大小-i间隔时间
cd 切换目录-(切回到上一次目录),·(切到家目录)
echo 打印输出 (printf打印的输出)-n:不换行输出,-e:可指定特殊的字符
echo “输入内容”> 路径。用于单文本插入,会覆盖原文本信息
echo “输入内容”>> 路径。用于追加单文本插入,不会覆盖原文本信息
vi/vim 记事本编辑器 命令模式(:wq wq! q!))<-->插入模式(esc切换命令模式)行号加gg定位行
:set nu(显示行号)。dd(删除当前行,删n行ndd)。yy(拷贝当前行)。p(粘贴)。G(切换到文件尾)。gg(切换到文件头部)。
w:write保存 q:quit(退出)!(强制)
当前行开头^,当前行结尾$,撤销删除u,向下搜索/字符(n重复搜索),向上搜索?字符
partprobe:通知内核分区表发生变化。最好接路径 /dev/sdb
[root@xuexi ~]# fdisk /dev/sdb 磁盘分区格式化
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x63d6f553.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): n(磁盘分区)
Command action
e extended
p primary partition (1-4)
tar zcvf(打包组合)zxvf(解包组合)jcvf(打包组合)jxvf(解包组合)
z(gzip打包格式)j(bzip打包格式)c(create)v(verbose),f(file)
--exclude -X(--exclude-form),-C指定目录解压,-p保持原文件属性
cut -d指定分隔符,-f数字选列,-c按字符
more(查看文件不能向上翻)
less -N(查看文件可以向上翻,显示行号)
cat 查看文件内容-n显示行号
tac:翻转内容输出
cp -apr 拷贝文件或目录(常用-a)。
mv 移动文件或目录还有改名
rm 删除,-f强制删除,-r递归删除,-fr删除指定的目录和文件,rmdir删除空目录
head 头部 显示文件头部行数-n 行数 默认头部10行
tail 尾部 显示尾部文件行数-n 行数 默认尾部10行—f +文件名(跟踪文件结尾的变化)-f(跟踪显示文件的结尾)-F(监控日志的变化信息,还有不断尝试连接的功能),/var/log/messages(系统日志文件)
grep 过滤核心命令之一(三剑客的老三) -v 排除语法: grep+ 内容 +文件名,过滤出内容。grep+ -v +内容+文件名,除内容外的所有内容
grep+过滤内容+--color=auto(让过滤的内容有颜色)
grep -E=egrep(可以过滤多个字符串,字符串用|分开).
grep -n . 文件名(显示行号)-i替换
sed 取各种内容(三剑客的老二)-n取消默认输出 p=print(打印) d=delete 取行用sed.语法:sed -n 行数(多行:行数,行数)p 文件名
语法:sed+ -n /内容/p +文件名,过滤出内容。sed+ /内容/d +文件名,出内容外的所有内容
awk 也有过滤作用(三剑客的老大)。语法:awk+ /内容/ +文件名,过滤出内容
查看eet.txt行数(20-30):awk '{if(NR>19&&NR<31) print $0}' ett.txt
awk '{print NR}'+文件名(打印文件行号)
NF:最后一列,例$NF取最后一列。
$1:取第一列,$0取所有列。
NR:显示行号
过滤ip地址的案例:
[root@xuexi ~]# ifconfig eth0|grep "inet addr"
inet addr:192.168.116.128 Bcast:192.168.116.255 Mask:255.255.255.0
[root@xuexi ~]# ifconfig eth0|grep "inet addr"|cut -d ":" -f3
192.168.116.255 Mask
[root@xuexi ~]# ifconfig eth0|grep "inet addr"|cut -d ":" -f3|cut -d " " -f1
192.168.116.255
[root@xuexi ~]# ifconfig eth0|grep "inet addr"|awk -F ":" '{print $3}'
192.168.116.255 Mask
[root@xuexi ~]# ifconfig eth0|grep "inet addr"|awk -F ":" '{print $3}'|awk '{print $1}'
192.168.116.255
[root@xuexi ~]# ifconfig eth0|grep "inet addr"|awk -F "[: ]+" '{print $4}'
192.168.116.128
[root@xuexi ~]# ifconfig eth0|grep "inet addr"|awk -F "[: ]+" '{print $2}'
inet
[root@xuexi ~]# ifconfig eth0|grep "inet addr"|awk -F "[: ]+" '{print $3}'
addr
[root@xuexi ~]# ifconfig eth0|grep "inet addr"|awk -F "[: ]+" '{print $1}'
[root@xuexi ~]# ifconfig eth0|grep "inet addr"|awk -F "[: ]+" '{print $5}'
Bcast
[root@xuexi ~]# ifconfig eth0|grep "inet addr"|awk -F "[: ]+" '{print $6}'
192.168.116.255
[root@xuexi ~]# ifconfig eth0|grep "inet addr"|awk -F "[: ]+" '{print $7}'
Mask
[root@xuexi ~]# ifconfig eth0|grep "inet addr"|awk -F "[: ]+" '{print $8}'
255.255.255.0
sed和正则表达式配合取ip地址:
[root@xuexi ~]# ifconfig eth0|sed -n 's#^.*addr:\(.*\) Bca.*$#\1#gp'
192.168.116.128
注:^.*addr(是以任意字符开头addr结尾)\转义(),()例的内容是addr结尾的内容。Bca.*$(是以Bca开头任意字符结尾的)。\1(是前面第一括号里的内容)
sed和正则表达式配合取ip地址:
[root@xuexi ~]# ifconfig eth0|sed -n 's#^.*addr:\(.*\) Bca.*$#\1#gp'
192.168.116.128
[root@xuexi ~]# ifconfig eth0|sed -n 's#^.*addr\(.*\) Scop.*$#\1#gp'
: fe80::20c:29ff:fe9d:93e8/64
[root@xuexi ~]# ifconfig eth0|sed -n 's#^.*addr:\(.*\) Scop.*$#\1#gp'
fe80::20c:29ff:fe9d:93e8/64
[root@xuexi ~]# ifconfig eth0|sed -n 's#^.*MTU:\(.*\) Metric:\(.*\).*$#\1 \2#gp'
1500 1
[root@xuexi ~]#
stat:可以查看文件或目录权限代表的数字。语法: stat /etiantian
[root@xuexi ~]# stat -c %a /etiantian
644
-c选择格式,%a:表示权限代表的八进制数。
过滤文件内空格的方法:
[root@xuexi ~]# cat /text.txt
oldboy
tretet
text
[root@xuexi ~]# grep -v "^$" /text.txt
oldboy
tretet
text
[root@xuexi ~]# sed '/^$/d' /text.txt
oldboy
tretet
text
[root@xuexi ~]# awk '/^[^$]'/ /text.txt
oldboy
tretet
text
sed 擅长行 awk擅长列 awk -F ":" '{print $1}'/etc/password
sed -i s#被改文件#新文件#g 文本名。(s:编辑替换,g:替换所有)
alias 查看系统中已有的别名,unalias + 命令,取消该命令的别名
别名的作用:(1)通过给危险命令加一些保护参数,防止人为误操作。(2)把很多复杂的字符串或命令变成简单的字符串或命令。
which 用于查看命令所在位置
find 查找命令 -type (f,d) -name "ddd"按名字查找 -mtime 按修改时间查找
用find删除,fing / -type f -name"文件名或者格式等"|xargs rm -f 。xargs:用来接着前面命令处理的结果,用于批量处理文件
-maxdepth+数字(查找目录的深度)
find ./ -type f -name "*log" -mtime +7|xargs rm -f(删除七天以前的日志,查找删除)
history:查看历史命令记录 history -d +指定历史命令记录的行号可以删除该记录 history -c 清空历史命令记录
ctrl+r 查找执行过命令
!!查看最近执行过命令
!+字母 查看最近以该字母开头的命令
tree 查看目录结构-L显示层数-d列目录
xargs 用于把find/ls的输出交给后面处理
seq -s(打印分隔符)打印数字序列类似echo {1..9}
man 查看命令及配置文件等的帮助
touch 创建文件或修改文件时间戳
pwd 显示当前路径
w :显示当前有哪些用户登录
stat:查看文件属性,语法stat 文件名
ps -ef:查看进程,例:
[root@xuexi ~]# ps -ef|grep crond|grep -v grep
root 927 1 0 01:13 ? 00:00:00 crond
cp前加\不会提示覆盖信息,语法:\cp+ 原路径文件 目标路径
cp前加命令路径也不会提示覆盖,语法:/bin/cp+ 原路径文件 目标路径
uname -a(查看所有),-r(查看内核),-m(查看系统是多少位的)。
whoami 查看当前用户
useradd +用户名(创建用户)-u(更改uid)-M(不创建家目录)-s /sbin/nologin(不让其用户登录)。-e+到期日期(设置用户期限)c5用户到期会延迟两天左右才停止登录,c6到期就登录不了,但su可以切换。-c("为创建新用户添加注释信息"内容用双引号)-d(指定家目录)
userdel (删除用户)-r连其家目录页删除。
注:工作中尽量不要-r去删除用户,可vi /etc/passwd将其用户注释
usermod:修改用户信息的。
chage -l +用户名(查看用户到期时间)-u(解锁)
groupadd 组名 -g(添加组更改组id)
groupdel:删除组
passwd +用户名(给该用户设置密码)-l(锁定用户使其无法改变密码)
passwd 不加用户名默认是给当前用户设置密码(普通用户只能改自己的密码)
passwd --stdin 修改用户密码,如果不指定用户,则修改当前用户密码。(普通用户只能改自己的密码)
超级用户root切换到普通用户下面,不需要密码。普通用户切换到root或其他用户下需要密码。
su 切换用户角色,(要加-。)
sudo su -(切换到root需要当前用户密码)。sudo +命令(可以执行命令但不能切换用户)。
visudo编辑sudo(不删除NOPASSWD表示不需要输入当前用户的密码)visudo -c:检查语法。
sudo -l 查看当前用户有哪些权限
visudo(授权98gg):授权oldboy执行删除命令
/etc/sudoers(sudo的配置文件)visudo=vi /etc/sudoers(前者有检查语法的功能后者没有)。
## Syntax:
##
## user MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
oldboy ALL=(ALL) NOPASSWD:/bin/rm
(授权组在组名前加%,例%oldboy,oldboy组)
## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS
sudo时间戳文件c5.8位置/var/run/sudo c6.5位置/var/db/sudo
ln(在两个文件之间创建连接包含目录)
ln -s 源文件名 新文件名
lsof 查看文件被进程占用情况 -i :端口号(查看端口号),查看文件被进程占用情况。
syslog服务是c5.8的,在6上是rsyslog。
rpm -ivh 软件安装命令-qa(查看安装好的软件包)-e删除、卸载--nodeps(配合-e卸载时不考虑依赖,直接卸载)
更改更新源:
cd /etc/yum.repos.d/
mirrors.163.com 国内centos网站
yum grouplist(查看已安装的软件包)
cd -(返回上一次目录)
安装后的基本调优及安全设置:
a.简单优化linux
1.关闭selinux(是美国国家安全局(NSA)对于强制访问控制的实现)。
runlevel 查看当前系统运行级别
init 切换运行级别
netstat 查看网络状态intup或an。
strace:跟踪服务端口,查看服务为什么慢
chkconfig:查看开机自启动项。
for oldboy in `chkconfig --list|grep "3:on"|awk {print $1}|grep -Ev "network|sshd|rsyslog|crond"; do chkconfig $oldboy off ; done :关闭出network|sshd|rsyslog|crond以外的所有启动项
增加安全性:(改前要备份)
port 52113(改端口号)。43permitrootlogin no(不允许root远程登录)
123usedns no 66permitemptypasswords no(不允许空密码登录)。
重启sshd:/etc/init.d/sshd reload或restart
查看远程服务是否开启:isof -i +(端口号)。
/etc/init.d/iptables stop(临时关闭防火墙)。
$PATH(环境变量),echo $PATH(查看系统有哪些路径)。
全局生效:/etc/profile。普通用户~/.bash_profile或者~/.bashrc
ulinit -n 查看文件描述符
ulinit -HSn +加数值(临时加大文件描述符)。
halt,poweroff关机
reboot重启
shutdown -r now(重启) -h now(关机)
exit:注销 ctl+d(注销)
linux比较工具:
diff 文件名 文件名(比较两个文件差异)
vimdiff 文件名 文件名(比较两个文件差异)
vi /etc/profile(可以把修改别名的命令放在里面永久生效)source /etc/profile(使其修改后的生效)
>/etc/issue(隐藏开机提示版本信息).
chattr +i(加文件路径):锁定关键系统文件。
chattr -i(加文件路径):解除锁定关键系统文件。
lsattr +文件名(查看该文件是否锁定)
ps -ef查看进程
文件权限说明:
r:read可读,表示具有读取阅读文件内容的权限。
w:write可写,表示具有新增、修改文件内容的权限(删除文件(修改文件名)的权限受父目录的权限控制,和文件本身权限无关)
x:Execute执行,表示具有执行文件的权限(文件本身要能够执行,普通用户同时还需要r(可读)的权限,root用户不用r(可读)权限也能执行,当然文件本身也需要能够执行。
-没有任何权限
注:网站目录755,网站文件644相对是安全权限(用户root,以及用户组root)
linux默认权限是由:umask控制的
默认普通用户为002.注当用户id -gn不等id -un时为022
cat /etc/login.defs :有对家目录umask管理的权限,默认077
uniq:去重 -c计数
[root@xuexi ~]# echo 123456 >a.txt
[root@xuexi ~]# echo 123456 >>a.txt
[root@xuexi ~]# echo 123456 >>a.txt
[root@xuexi ~]# echo wwwww >>a.txt
[root@xuexi ~]# echo wwwww >>a.txt
[root@xuexi ~]# echo wwwww >>a.txt
[root@xuexi ~]# cat a.txt
123456
123456
123456
wwwww
wwwww
wwwww
[root@xuexi ~]# uniq a.txt
123456
wwwww
[root@xuexi ~]# uniq -c a.txt(显示重复的次数)
3 123456
3 wwwww
sort:排序 -n按数字排序-r倒序-t指定分隔符-k配合-t指定列数
[root@xuexi ~]# sort a.txt
123456
123456
123456
456789
456789
qqqqq
qqqqq
qqqqq
qqqqq
wwwww
wwwww
wwwww
[root@xuexi ~]# sort -n a.txt
qqqqq
qqqqq
qqqqq
qqqqq
wwwww
wwwww
wwwww
123456
123456
123456
456789
456789
[root@xuexi ~]# sort -nr a.txt
456789
456789
123456
123456
123456
wwwww
wwwww
wwwww
qqqqq
qqqqq
qqqqq
qqqqq
linux目录的权限:
可读:r表示具有浏览目录下面文件及目录的权限,即ls dir。(不能进的目录里,即无法cd dir),如果没有x权限,列表时也是有问题的看不到,加-l查看属性时也会出现问号,提示没有权限但可以看到文件名。
可写:w表示具有增加、删除、修改目录内文件名(一般指文件名)的权限(需要x权限配合)。
可执行:x表示具有进入目录的权限,例:cd dir。
setuid:占位4000
1.用户对应的前三位的x位上如果有s就表示,suid。当x位上没有x的时候,suid就用S。
2.setuid位是让普通用户可以以root(或其他)用户角色运行只有root(或其他)账号才能运行的程序或命令,或程序命令对应本来没有权限操作的文件。(注意和su及sudo的区别)。
3.仅对二进制命令程序有效,不能用在shell等类似脚本文件上(因为shell脚本仅仅是调用二进制命令而已,所以具体还要看命令本身的权限)。
4.二进制命令程序需要有可执行权限x。
5.suid权限仅在程序执行过程中有效。
6.执行命令的任意系统用户都可以获得该命令程序在执行期间对应的拥有者的所有权限。
7.suid是双刃剑,是一个比较危险的功能,对系统安全有一定的威胁。对系统suid无用的进行取消(前提要评估是否无用)。
8.suid优先级高于sgid
sgid对于目录:占位2000
在目录里创建文件会对应继承目录所属组。
特殊权限对应的数字:
suid:4000 s,sgid:2000 s,粘滞位:1000 t
r:4 w:2 x:1 -:0
改变权限属性命令:chmod(change mode).
chmod -R:表示递归,
u:属主或超级用户 g: 属组 o: 其他用户 a: 所有
win32下可执行文件:*.exe,*.bat,*.com
linux下可执行文件:*.sh,*.py,*.perl等。
+ :增加 - :减少 =:清除原来的变成现在的
chown:改变用户或用户组 -R(表示递归)
语法:chown 用户名:用户组 文件名
[root@xuexi ~]# chown oldboy /text.txt
[root@xuexi ~]# ll /text.txt
-rwx--x-w- 1 oldboy root 23 Aug 10 17:15 /text.txt
chgrp:改变用户组
如何查找suid的命令:
[root@xuexi oldboy]# find /usr/bin -type f -perm 4755 -exec ls -l {} \;
-rwsr-xr-x. 1 root root 66352 Dec 8 2011 /usr/bin/chage
-rwsr-xr-x. 1 root root 71480 Dec 8 2011 /usr/bin/gpasswd
-rwsr-xr-x. 1 root root 54240 Jan 30 2012 /usr/bin/at
-rwsr-xr-x. 1 root root 30768 Feb 22 2012 /usr/bin/passwd
-rwsr-xr-x. 1 root root 51784 Nov 23 2013 /usr/bin/crontab
-rwsr-xr-x. 1 root root 27576 Sep 20 2013 /usr/bin/pkexec
-rwsr-xr-x. 1 root root 36144 Dec 8 2011 /usr/bin/newgrp
fdisk 磁盘分区的命令 -l查看列表 小于2T的分区工具
parted GNU磁盘分区工具,适合大于2T的分区工具
mount 挂载的命令,-t文件系统类型-o挂载的选项
umount 卸载的命令,-lf强制卸载
dd (dd if=dev/sda of=mbr.bin bs=512 count=1)
mkfs 格式化命令 -t文件系统类型或mkfs.ext3
df -h 查看磁盘挂载信息
du -sh 查看文件的大小
dumpe2fs 查看文件系统信息的
sync:把数据写入磁盘里,async:把数据写入内存
快捷键命令:
ctrl+a:光标定到开头
ctrl+e:光标定到结尾
ctrl+c:中断命令
ctrl+d:注销
ctrl+l:清屏
ctrl+u:剪切(也可用作删除。删除光标以前的。)
ctrl+k:删除光标以后的。
ctrl+r:查找历史命令执行
ctrl+z:结束进程
ctrl+s:锁屏
ctrl+q:解除锁屏
符号:
;多个命令的分隔符
/ 根或路径的分隔符
> 标准 输出重定向(数据流朝着箭头的方向流动),覆盖原来的文件
>>标准输出追加重定向(数据流朝着箭头的方向流动),不覆盖原来的文件
<标准输入重定向
<<追加重定向
.表示当前目录 (以.开头的文件为隐藏文件)。
..表示退回上一级目录
~ 用户的家目录
| 管道,把前一个命令的输出交给你后一个命令进行处理
$ 普通用户
# 超级用户
{}配合echo打印序列echo {1..6}
^+字母(以什么开头的)
字母或符号+$在过滤中可以是以什么结尾
^$表示空格
find中!表示非
[^加内容]是把内容除外
正则表达式实际就是一些特殊字符,赋予了它特定的含义。
1.^word 搜索以word开头的。
2.word$ 搜索以word结尾的。
3. . 代表且只能代表任意一个字符。
4. \ 例\. 转义符号,让有着特殊身份意义的字符,变回原来没有特殊意义。
5. * 例0* 重复0个或多个星号前面的一个字符。
6. .* 匹配所有字符,^.*以任意多个字符开头。
7. [] 字符集合的重复特殊字符的符号
8.[^word] 匹配不包括^后的任意字符的内容。
9. a\{n,m\} 重复n次到m次,前一个重复的字符(所有\表示转义,egrep不用转义)
\{n,\} 重复至少n次,前一个字符。
\{n\} 重复n此,前一个重复字符。
扩展的正则表达式:ERE
1.+ 重复一个或一个以上前面的字符。
2.? 重复0个或一个0前面的字符。(最多重复一次)
3.| 用或的方式查找多个符合的字符串。
4. ()找出“用户组”字符串