Linux命令随笔

时间:2023-03-08 15:46:24
Linux命令随笔
 Linux命令总结

 man   ==命令帮助;
help ==命令的帮助(bash的内置命令);
ls ==list,查看目录列表;
-ld:查看目录权限;
-l:(long)长格式显示属性;
-F:给不同的文件类型结尾加标识
-p:给目录加斜线
-r:(reverse)反转排序
-t:按时间排序
--color=auto 给输出的不同类型文件加不同颜色
-a:显示隐藏文件
ls -l --time-style=long-iso,显示友好的长格式时间
例子:
[root@server oldboy]# ls -l --time-style=long-iso
总用量 4
drwxr-xr-x 2 root root 4096 2015-12-18 20:25 oldboydir
lrwxrwxrwx 1 root root 9 2015-12-18 21:03 oldboydir_soft_link -> oldboydir mkdir ==创建目录
-p:递归创建目录
vim ==相当于复杂的文档编辑器
=====================================================================================================================================================================================================
echo "i am studying linux" >/>> oldboy.txt //后面跟一个大于号表示覆盖,两个大于号表示追加;
echo ==打印输出内容,配合“>”或“<<”可以为文件覆盖及追加内容;
-n:不换行输出
-e:解析转义字符,\t tab \n回车 \b退格 echo“
boy
girl
” >oldboy.txt
实例如下:(2015/12/22)
[test@server ~]$ echo "oldboy";echo "oldboy"
oldboy
oldboy
[test@server ~]$ [test@server ~]$ echo -n "oldboy";echo "oldboy" //不换行输出
oldboyoldboy
[test@server ~]$ [test@server ~]$ echo -e "oldboy\toldgirl"
oldboy oldgirl
[test@server ~]$ [test@server ~]$ echo -e "oldboy\noldgirl"
oldboy
oldgirl
[test@server ~]$
====================================================================
cat ==查看文件内容;
-n:显示行号
特殊用法:增加多行内容
[root@server data]# cat >/data/oldboy.txt<<EOF
I am studying linux.
EOF
cp ==copy 相当于拷贝命令;例如:cp old.txt /tmp/
cp -a/-r /etc/ /tmp 拷贝目录/etc/到/tmp
-a:相当于-pdr
-r:递归,用于复制目录;
-p:保持属性;
cp='cp -i' -i:表示提示确认信息参数
例:从当前目录文件到另外目录时,如果拷贝文件名相同,可使用/bin/、"\"取消是否覆盖信息;
[root@server /]# cp /mnt/test.txt /tmp
cp: overwrite `/tmp/test.txt'?
[root@server /]# /bin/cp /mnt/test.txt /tmp //前面加/bin/可以取消是否覆盖的提示信息;
[root@server /]# \cp /mnt/test.txt /tmp/ //前面加"/"可以取消是否覆盖的提示信息;
mv ==移动目录或文件,例如:mv /data /root
pwd ==查看当前用户所在目录; rm ==remove 删除文件或者目录 -f强制,-r删除目录;
生产场景尽量不要使用rm,如果非要用,一定要先cp等备份。 替代方法:
mv移动到一个临时目录,相当于回收站;
find删除
find *****删除
find /root/data -type f -exec rm -f {} \; // -exec表示查找
find /root/data -type f|xargs rm -f
find 查找-type !表示取反的意思;
!:取反
-a:表示and
-o:(or)表示或者
-maxdepth +数字:表示查找的深度
-mtime:表示修改时间
例:
find /oldboy -maxdepth 1 -type d ! -name "oldboy" (其中-maxdepth跟tree -L 1可以这样理解) 例:在-type f前面加"!",表示执行命令时不查找以文件为结尾的文件;
[root@server ~]# find /root/data/ ! -type f -name "*.txt"|xargs ls -ld 使用find删除例子1:
[root@server data]# find /root/data/ -type f
/root/data/zhurui.txt
/root/data/zhurui2.txt
/root/data/zhurui1.txt
[root@server data]# find /root/data/ -type f -exec rm -f {} \;
[root@server data]# ls
[root@server data]# 使用find删除例子2:
[root@server data]# touch zhurui.txt zhurui1.txt zhurui2.txt
[root@server data]# ls
zhurui1.txt zhurui2.txt zhurui.txt
[root@server data]# find /root/data/ -type f
/root/data/zhurui.txt
/root/data/zhurui2.txt
/root/data/zhurui1.txt
[root@server data]# find /root/data/ -type f|xargs rm -f
[root@server data]# ls
[root@server data]# find删除保留一个特定文件,其余都删掉;
[root@server data]# touch zhurui.txt zhurui1.txt zhurui2.txt zhurui3.txt zhurui4.txt
[root@server data]# ls
zhurui1.txt zhurui2.txt zhurui3.txt zhurui4.txt zhurui.txt
[root@server data]# find /root/data/ -name "zhurui4.txt"
/root/data/zhurui4.txt
[root@server data]# find /root/data/ -type f -name "zhurui4.txt"
/root/data/zhurui4.txt
[root@server data]# find /root/data/ -type f ! -name "zhurui4.txt"|xargs rm -f
[root@server data]# ls
zhurui4.txt
[root@server data]# head ==头部,取文件的前N行,默认前10行,取前三行 -n 3
简写就是-3
例:
[root@server data]# head -n 2 test.txt
test
liyao
tail ==尾巴,取文件的最后N行,默认最后10行,取最后三行 -n 3
简写就是-3 -f:跟踪结尾
例:
tail -f /var/log/messages //跟踪一个文件结尾的变化 举例:打印20-30的数字
[root@server ~]# seq 100 >test1.txt //将1-100数字在test1.txt文件中列举出来
[root@server ~]# head -30 test1.txt //取文件的前30行
[root@server ~]# head -30 test1.txt | tail -11 //首先取列举出的数字前30行,接着取最后11行;
20
21
22
23
24
25
26
27
28
29
30 第二种方法:
[root@server ~]# sed -n '20,30p' test.txt
20
21
22
23
24
25
26
27
28
29
30 (1)awk 一门语言,过滤内容(取列)
awk '{print $1}' 文件 //$1表示第一列,$2表示第二列....$NF(表示最后一列)
awk -F "分隔符号" '{print $1}' 文件 //$1表示第一列,$2表示第二列
$1表示第一列,$2表示第二列....$NF(表示最后一列)..$(NF-1)表示倒数第二列
$0表示整行
-F:awk多分隔符
深入浅出三剑客之awk必杀技一例:http://oldboy.blog.51cto.com/2561410/950730
深入浅出linux三剑客之sed必杀技一例:http://oldboy.blog.51cto.com/2561410/949365 linux三剑客 老大
例:
[root@server test]# awk -F ":" '{print $1}' /etc/passwd
[root@server test]# awk -F ":" '{print $2}' /etc/passwd
[root@server test]# awk -F ":" '{print $1"="$2"="$3}' /etc/passwd
[root@server test]# awk -F ":" '{print $(NF-1)}' /etc/passwd //表示筛选倒数第二列 [root@server test]# awk '{if(NR<31 && NR>19) printf $1"\n"}' /root/test1.txt //"\n"表示回车 NR:代表行号 &&:代表and
20
21
22
23
24
25
26
27
28
29
30 [root@server test]# awk '{if(NR>19 && NR<31) printf $1"\n"}' /root/test1.txt
20
21
22
23
24
25
26
27
28
29
30 例:
[root@server ~]# echo "I am oldboy,myqq is 24731701">> oldboy.txt
[root@server ~]# cat oldboy.txt
I am oldboy,myqq is 24731701
[root@server ~]# awk -F "[, ]" '{print $3" "$6}' oldboy.txt //光取第3跟第6列
oldboy 24731701 实例取IP地址:(2015/12/22号添加)
[root@server test]# ifconfig eth0|awk -F '[: ]+' 'NR==2 {print $4 }' //[方框中的内容为目标前后分隔符]
192.168.1.11
[root@server test]#
============================================================================================================== (2)grep ***** ==擅长过滤,过滤器,把想要的或者不想要的分离开。尽量使用双引号("");
-v:表示排除
-o:只匹配你想要的结果,必备参数
-i:表示不区分大小写;
-E:<====> grep -E=egrep
-n:打印行号
--color=auto 给匹配到的字符串加颜色(不是正行)
-a: 在二进制文件中,以文本文件的方式搜索数据;
-c: 计算找到‘搜索字符串’的次数
提示:-i -v为常用参数
-A: After的意思,显示匹配字符串及其后n行的数据
-B: before的意思,显示匹配字符串及其前n行的数据
-C: 显示匹配字符串及其前后各num行
例1:
[root@server zhu]# grep 3306 /etc/services
mysql 3306/tcp # MySQL
mysql 3306/udp # MySQL
[root@server zhu]# grep --color=auto 3306 /etc/services
mysql 3306/tcp # MySQL
mysql 3306/udp # MySQL
linux三剑客 老三 参数介绍:
-B:除了显示匹配的一行之外,并显示改行之前的num行
例:
[root@server ~]# grep 30 -B 10 test.txt
20
21
22
23
24
25
26
27
28
29
30
-A:除了显示匹配的一行之外,并显示该行之后的num行
例2:
[root@server ~]# grep 20 -A 10 test.txt
20
21
22
23
24
25
26
27
28
29
30 -C:除了显示匹配的一行之外,并显示改行之前后各num行
例:
[root@server ~]# grep 25 -C 5 test.txt
20
21
22
23
24
25
26
27
28
29
30
grep "string" -B 10 例:文件如下,过滤文件中的空行
[root@server ~]# cat oldboy.txt
oldboy oldooboy oldboooytxt
方法1:
[root@server ~]# grep -v "^$" oldboy.txt //这种方法最佳
oldboy
oldooboy
oldboooytxt
[root@server ~]# 方法2:
[root@server ~]# grep "." oldboy.txt
oldboy
oldooboy
oldboooytxt
[root@server ~]#
方法3:
[root@server ~]# sed '/^$/d' oldboy.txt
oldboy
oldooboy
oldboooytxt
[root@server ~]#
方法4:
[root@server ~]# awk '/^[^$]/' oldboy.txt
oldboy
oldooboy
oldboooytxt
[root@server ~]#
================================================================================================================== (3)sed *****(strem editor) ==擅长取行、查找替换
sed -n
过滤:sed -n '/过滤的内容/处理的命令' 文件
-n:取消sed的默认输出
-i:改变文件内容
“=”:等号表示行号
处理的命令:p print打印,d delete删除 sed -n '20,30p' test.txt
linux三剑客 老二
例1:
[root@server data]# cat test.txt
test
liyao
oldboy
[root@server data]# sed -n '/oldboy/p' test.txt ==>等价于grep "oldboy" test.txt
oldboy
[root@server data]# sed '/oldboy/d' test.txt ==>等价于 head -2 test.txt ==>等价于grep -v "oldboy" test.txt
test
liyao
[root@server data]#
sed替换:*****
例子2:
[root@server ~]# sed -i 's#zhurui#oldboy#g' test.txt
s常说的查找并替换,用一个字符串换成另外一个
g(global)与s联合使用时,表示对当前行全局匹配替换(与下一个g意义不同)
-i:修改文件内容
"#"是分隔符,可以用/@=等替换; sed -r 's#(.*)#\1#g' +文件(oldboy.txt) //(.*)表示括号里的内容可以通过\1可以取出来;
实例如下:
[root@server ~]# echo "oldboy oldgirl"|sed -r 's#(.*) (.*)#\1 \2#g'
oldboy oldgirl
[root@server ~]# 企业实例:
第一种方法:
[root@server ~]# ifconfig eth0|sed -n '2p'|sed -r 's#^.*dr:(.*) Bc.*$#\1#g'
192.168.1.11
[root@server ~]#
第二种方法:
[root@server ~]# ifconfig eth0|sed -rn '2s#^.*dr:(.*) Bc.*$#\1#gp'
192.168.1.11
[root@server ~]# [root@server data]# sed -r 's#(zhu)#\1#g' oldboy.txt <====>sed -i 's#zhu#zhu#g' oldboy.txt
zhu zhu
zhu1 zhu
zhu2 zhu (1)[root@server data]# find /root/data/ -type f -name "test.txt"|xargs sed -i 's#oldboy#oldgirl#g'
(2)[root@server data]# find /root/data/ -type f -name "test.txt" -exec sed -i 's#oldboy#oldgirl#g' {} \;
(3)[root@server data]# sed -i 's#oldgirl#oldboy#g' `find ./ -type f -name "test.txt"` //第三种方法优势更大点 例3:
awk sed的过滤:都是过滤以d开头的目录
[root@server ~]# ls -lF|awk '/^d/'
drwxr-xr-x 2 root root 4096 12月 2 15:41 qq/
drwxr-xr-x. 102 root root 4096 11月 27 16:57 test/
drwxr-xr-x 7 root root 4096 12月 3 16:39 zhu/ [root@server ~]# ls -lF|sed -n '/^d/p'
drwxr-xr-x 2 root root 4096 12月 2 15:41 qq/
drwxr-xr-x. 102 root root 4096 11月 27 16:57 test/
drwxr-xr-x 7 root root 4096 12月 3 16:39 zhu/
[root@server ~]# [root@server ~]# ls -lF|grep '^d'
drwxr-xr-x 2 root root 4096 12月 2 15:41 qq/
drwxr-xr-x. 102 root root 4096 11月 27 16:57 test/
drwxr-xr-x 7 root root 4096 12月 3 16:39 zhu/ 例4:过滤Ip地址:
[root@server ~]# ifconfig eth0|sed -n '2p' //-n表示取消默认输出,2p表示取第2行
inet addr:192.168.1.11 Bcast:192.168.1.255 Mask:255.255.255.0 yum ==linux里包管理器,宝珠解决依赖问题;
例子:yum -y install tree -y
下载tree包,然后调用rpm命令安装tree包
如果需要依赖包,帮你下载帮你提前安装;
yum update -y ====等价于upgrade yum grouplist 里选包组, 然后yum groupinstall "包组" -y
yum search 关键字或yum search all:升级补丁 yum remove tree -y <======千万不要用 rpm -ivh(安装、显示输出、人类可读展示)
rpm -ivh 包名.rpm(提前下载好)
最大问题,依赖包问题不好解决;
a---b---c---d
例:
[root@server oldboy]# rpm -qa tree //查询本机已经有无安装tree包 -qa
tree-1.5.3-3.el6.x86_64
[root@server oldboy]# tree ==显示目录树结构
-L:显示层数
-d:显示目录
例:
[root@server ~]# tree /root/zhu/ -Ld 1
/root/zhu/
├── a
├── b
├── c
├── d
└── e alias ==查看以及定义别名(外号、小名)
例子:alias rm='echo"rm can not be used,please use mv"' //保护系统,禁止新手使用rm命令,使用mv命令;
别名永久生效位置:root用户:[root@server etc]# vim /root/.bashrc
所有用户都生效:/etc/bashrc或/etc/profile定义
生效source /etc/profiles
unalias ==取消别名
seq sequence==seq序列
-s 制定序列的分割符
-w
history ==打印用户操作的历史记录
ps -ef|grep ssh ==查看进程命令
ss/netstat -lntup/-tulp|grep ssh ==查看端口是否工作
查看配置好的Ip:
ifconfig
ip add
hostname 查看主机名(uname -n)
uname 打印系统信息 -r 内核 -m:查看32位还是64位 -n主机名
whoami 查看当前用户
##############################################################################################
su 用户角色切换
su - 用户名:-参数切换用户环境变量
实例:
[root@server tmp]# su - oldboy -c "touch a.txt" //表示在不切换用户前提下,使用-c选项使得在不切换的账号情况下,执行操作
[root@server tmp]# ls -l /home/oldboy/a.txt
-rw-r--r-- 1 oldboy incahome 0 Jan 2 22:50 /home/oldboy/a.txt
[root@server tmp]#
参考文档:http://oldboy.blog.51cto.com/2561410/1053606
##############################################################################################
getenforce 检查selinux状态
setenforce 设置SELINUX状态 1启用 0警告,不启用
例:
方法1:
[root@server selinux]# sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
[root@server selinux]# grep =disabled /etc/selinux/config
SELINUX=disabled
[root@server selinux]# cat /etc/selinux/config
方法2:
[root@server selinux]# getenforce
Enforcing
[root@server selinux]# setenforce
usage: setenforce [ Enforcing | Permissive | 1 | 0 ]
[root@server selinux]# setenforce 0 //关闭,警告
[root@server selinux]# getenforce
Permissive runlevel: //查看用户所在系统运行级别
init: 切换运行级别,后面接对应级别的数字;
init 5 ==startx 切换桌面环境
chkconfig 设置开机自启服务
chkconfig --list iptables diff 比较,接两个文件
vimdiff 高级比较,高亮显示两个文件内容区别
例:
[root@server ssh]# diff sshd_config sshd_config20151129.bak [root@server ssh]# vimdiff sshd_config sshd_config20151129.bak
============================================================= which:查找命令所在的路径,搜索范围来自全局环境PATH变量对应的路径; whereis:查找相关信息 -b :查二进制命令 locate :从数据库里查相关信息,新命令需提前updatedb更新数据库 例:
[root@server ~]# whereis -b ifconfig
ifconfig: /sbin/ifconfig
find / -type f -name "mv"
find / -type f -name "useradd"
locate useradd
####################################################################################################
history 显示历史记录
history -c:清空所有的历史记录
history -d +多(#)行号:清空第#行;
####################################################################################################
wget:下载的意思 wget http://url
[root@server yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
-O:指定文件改成什么什么样子
--spider 爬虫,检查网站是不是好的,不会下载只会检查
-T --timeout=seconds 超时时间
--tries=10 指定重试的次数
-q --quit 关闭输出
wget --spider --force-html -i bookmarks.html
#################################################################################################### 2016/1/3号添加
皇帝:root
visudo =======vim /etc/sudoers 编辑sudo配置文件(vi /etc/sudoers) -c 检查语法
注意:配置用户权限位置在配置文件98行位置(用98gg直接切换) 臣民:
sudo 调兵虎符,sudo配置文件授权之后,执行命令时需要命令前带sudo
sudo [参数选项] 命令
-l:必须登录用户下面,查看root给当前用户所分配的权限规则
例:
[oldboy@server ~]$ sudo -l
用户 oldboy 可以在该主机上运行以下命令:
(ALL) /bin/touch, (ALL) /usr/sbin/useradd, (ALL) /bin/ls, (ALL) /bin/rm ####################################################################################################
ifup eth0:打开网卡
ifdown eth0:关闭网卡
df -h =====> //以可读的形式查看磁盘挂载信息 <=====>等价于cat /proc/mounts
#####################################################################################################
df -i:查看挂载的磁盘inode情况
[root@server ~]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda3 479552 59041 420511 13% /
tmpfs 71261 1 71260 1% /dev/shm
/dev/sda1 51200 38 51162 1% /boot
[root@server ~]#
##################################################################################################### cat /proc/mount //设备挂载信息
fsck -A ======> 磁盘检查(不要检查好的磁盘),卸载的状态检查。 dmesg---内核打印的错误信息,例如硬件故障警告; [root@server profile.d]# crontab -l
[root@server profile.d]# cat /var/spool/cron/root //定时任务所在路径 tar 打包具体参数,见视频
gzip/unzip zip压缩解压缩 cut 切割,简单的取列命令
-d:指定分隔符
-f数字:表示取第几列。-f3,6
-c按字符取; wc 打印行号,字节数
-l:显示一个文件有多少行
例子: [root@server ~]# wc -l /etc/services
10774 /etc/services
[root@server ~]# [root@server ~]# cat -n /etc/services|tail -1
10774 iqobject 48619/udp # iqobject dumpe2fs - dump ext2/ext3/ext4 filesystem information 12月10号
chmod == change mode改变文件权限
方法 1:数字修改方法
chmod [数字组合] 文件名
r 4
w 2
x 1
- 0
例: rw-rw-r-x 代表数字权限655 方法2:字符权限修改方法
chmod [用户类型] [+ | - | =] [权限字符] 文件名
rw-rw-r-x====>rwx--xr-x:
例:chmod u+x,g=x test.sh umask默认值为022;
查看umask值命令为:umask
修改umask: umask 051
例:
如果umask值位051,则创建文件后权限位为多少?如果umask值中有奇数,奇数位有几位对应有几个1,必须是先减去umask值,再加上对应的几个1。
答:666 666
- 051 - 051
----------(错误) + 11
615 ---------(正确)
626 永久修改配置文件将配置信息填写到/etc/profile中;
vim /etc/profile
12.14
修改用户属组
chown .adminuser /home/admins====chgrp adminuser /home/admins
chown 用户 文件或目录 <====仅仅授权用户
chown :组 文件或目录 <====仅仅授权用户组
等同于"chgrp 组 文件或目录"
chown 用户:组 文件或目录 <=====表示授权用户和组。
强调:
1)其中的冒号“:”可以用点好“.”替代。
2)要授权的用户和组名,必须是Linux里实际存在的。 ##########################################################################
删除用户的命令:userdel -r oldboy //将oldboy家目录一起删除
删除用户组的命令:groupdel incahome
useradd oldboy -u +(uid号/用户名)-g + (gid号/组名)
userdel:
所涉及到的文件:
/etc/passwd--用户账号资料文件
/etc/shadow--用户账号资讯加密文件
/etc/group--用户组资讯文件
useradd 添加用户 -u uid -g 指定所属组 -s 登录SHELL -M
-c:设置备注信息
-u:设置UID号
-G:设置对于的属组
-s:设置对应的shell
-d:设置相应的家目录
-e:指定用户过期时间
实例:
8 [root@server ~]# useradd -c "HandsomeBoy" -u 806 -G root,oldboy,sa -s /bin/sh -d /oldboy6 oldboy6
9 ##注释
10 -c:设置备注信息
11 -u:设置UID号
12 -G:设置对于的属组
13 -s:设置对应的shell
14 -d:设置相应的家目录
15 ###成果如下
16 [root@server ~]# grep "oldboy6" /etc/passwd
17 oldboy6:x:806:806:HandsomeBoy:/oldboy6:/bin/sh
18 [root@server ~]# id oldboy6
19 uid=806(oldboy6) gid=806(oldboy6) groups=806(oldboy6),0(root),512(sa),513(oldboy) 例:
[root@server ~]# echo 123456|passwd --stdin oldboy
更改用户 oldboy 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
[root@server ~]# echo 123 >p.log
[root@server ~]# passwd --stdin oldboy <p.log
更改用户 oldboy 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
[root@server ~]# #########################################################################
usermod 用户信息修改相关命令 -l (login_name):变更用户login时的名称为login_name,其余信息不变、
-L:冻结用户密码
-U:取消冻结用户的密码,使之恢复登录。实际同样是修改/etc/shadow的内容
usermod 修改用户 -u uid,-g 指定所属组,-s登录SHELL,-e 指定用户过期时间
##########################################################################
chage 查看及修改用户密码相关信息
-E,--expiredate过期时间,将账号过期时间设为“过期时间”,日期写法MM/DD/YY
-I,--inactive失效密码
-l,--list 显示账号年龄信息
-m,--mindays 最小天数
-M,--maxdays 最大天数
-W,--warndays 警告天数
例:
[root@server ~]# chage -l oldboy
Last password change : Dec 31, 2015
Password expires : Feb 29, 2016
Password inactive : Mar 30, 2016
Account expires : never
Minimum number of days between password change : 7
Maximum number of days between password change : 60
Number of days of warning before password expires : 10
[root@server ~]# chage -m 8 -M 61 -W 11 -I 31 oldboy <====>等价于passwd -n 8 -x 61 -w 11 -i31 oldboy命令也可以实现同样功能,知识参数的写法不同
[root@server ~]# chage -l oldboy
Last password change : Dec 31, 2015
Password expires : Mar 01, 2016
Password inactive : Apr 01, 2016
Account expires : never
Minimum number of days between password change : 8
Maximum number of days between password change : 61
Number of days of warning before password expires : 11 #########################################################################
passwd --stdin 非交互式设置密码 #########################################################################
lsattr 查看特殊属性。
chattr 设置特殊属性,例如: +i 不可变
例:
[root@server ~]# chattr +i /etc/passwd /etc/group /etc/shadow /etc/gshadow /etc/inittab
[root@server ~]# chattr -i /etc/passwd /etc/group /etc/shadow /etc/gshadow /etc/inittab //解除锁定
[root@server ~]# lsattr /etc/passwd /etc/group /etc/shadow /etc/gshadow /etc/inittab //查看文件锁定状态
[root@server ~]# mv `which chattr` /opt/oldboy //防止黑客找到文件,可以将配置文件移动到其他地方
##########################################################################
解析命令: 方法:反引号``或$() 等价于
tar zcvf etc-`date +%F`.tar.gz /etc/<========>tar zcf var-$(date +%F).tar.gz /var/ ###########################################################################
2016年1月2号添加
who show who is logged on
w show who is logged on and what they are doing
whoami 查看当前用户
需要会的:id,w,who,last,lastlog
了解:users,groups,newgrp #####################################################
tr命令
#方法5:扩展如何将ls -l命令中的权限字符转换为八进制?
22 [root@server ~]# ll /etc/hosts|cut -c 2-10|tr "rwx-" "4210"|awk -F "" '{print $1+$2+$3 $4+$5+$6 $7+$8+$9}'
23 644
24 #知识点:1.tr字符替换的使用;2.cut -c截取字符;3.awk指定分隔符为空。 ############################################################################################ ps
locate
whereis
export
netstat(ss)
ifconfig
source
ntpdate
less 按屏(空格,page up/page down) 或按行(回车)查看文件
more 按屏(空格)或按行(回车)查看文件(不能向上翻)
========================================================================
/var/log/messages 系统日志
/var/log/secure 系统安全日志
/var/spool/clientmqueue 邮件临时目录
/proc/interrupts 查看中断文件
/etc/fstab 磁盘文件系统开机自动挂载文件
/etc/profile 全局的环境配置文件
======================================================================== 绝对路径:必须从/开始
相对路径:没有从/开始 快捷键:
TAB 命令、路径补全
bash内置命令:用help命令查看帮助
alias
bg
break
cd
continue
declare
echo
eval
exec
exit
export
fg
getopts
hash,
help,
history,
jobs,
kill,
let
local,
logout,
mapfile,
popd,
printf,
pushd,
pwd,
read,
readonly,
return,
set,
shift,
shopt,
source,
suspend,
test,
times,
trap,
true,
type,
typeset,
ulimit,
umask,
unalias,
unset, 特殊字符命令:
>或1> 重定向,会清除文件里所有以前数据,增加新数据;
>>或1>> 追加重定向,文件结尾加入内容,不会删除已有的文件内容;
<0 输入重定向;
<<0 追加输入重定向;
2>错误重定向
2>>错误追加重定向
==============================================================
1.标准输入(stdin):代码为0,使用<或<<数据流向从右向左
2.标准输出(stdout): 代码为1,使用>或>>数据流向从左向右
3.错误输出(stderr):代码为2,使用2>或2>>. 箭头的指向就是数据的流向;
下面3种方法是等价的
/dev/null 空设备 黑洞
1) 1 >/dev/null 2 >/dev/null
2) ***** 1>/dev/null 2>&1
3) &>/dev/null ==================================================================
通配符:(除了正则表达式以外的字符)
* 通配符,代表任意(0到多个)字符*****
?通配符,代表任意1个字符
; 连续不同命令的分隔符*****
# 配置文件注释*****
\ 让一个有意义的字符,脱掉马甲。
..上级目录
. 当前目录 \.代表点号;
. 还代表隐藏文件
'' 单引号,不具有变量置换功能,输出是所见即所得。
"" 双引号,具有变量置换功能,解析变量后输出。
``:里面放命令,才会执行,tab键上面的键,反引号,两个``中间为命令,会先执行,等价于$()。``===$()
| 管道(把前一个命令结果的输出交给后一个程序继续处理)
~ 用户的家目录,针对root环境~就代表/root。
$ 变量前需要加的符号
/ 路径分隔符号
{} 生成字符或数字序列,类似seq,列举的意思,一般搭配echo使用;
!+字母:调出最近一次以此字母开头的命令并执行;
例:
首先执行 mkdir stu{001..100}
接着执行!m ======>mkdir stu{001..100}
!!:表示使用最近一次操作的命令;
! 逻辑运算中的“非”(not)
&& 当前一个指令执行成功时,执行后一个指令
|| 当前一个指令执行失败时,执行后一个指令
>或1> 重定向,会清除文件里所有以前数据,增加新数据;
>>或1>> 追加重定向,文件结尾加入内容,不会删除已有的文件内容;
<0 输入重定向;
<<0 追加输入重定向;
2>错误重定向
2>>错误追加重定向
cd -:表示回到所在目录的上一级目录;
例:
[root@server test]# pwd
/root/test
[root@server test]# cd /tmp/
[root@server tmp]# cd -
/root/test
[root@server test]# pwd
/root/test =====================================================================
基础正则表达式:一些特殊的符号 ,表示一些特殊的功能和作用
. 单个任意字符
* 重复前面任意0个或多个字符
.* 匹配任意字符
sed -i 's#(可以用正则匹配)#\1#g' oldboy.txt
把前面正则匹配的括号内的结果,在后面用\1取出来操作。
^$:表示空行
[]:匹配指定范围内任意单个字符;
{n,m}:表示n-m次;
\:让一个正则表达式有意义的字符脱掉马甲;
?:0或1个;
+:重复前面1或多次;
|:或
():分组
[^]:表示取反
^;表示以什么什么开头,例如:^d:表示以d开头的文件
$;表示以什么什么结尾,例如:/$:表示以/为结尾的,,oldboy$:以oldboy为结尾的
5.扩展的正则表达式:ERE(egrep或grep -E)
1)+ 重复一个或一个以上前面的字符。
例:
[root@server oldboy]# grep -Eo "go+d" oldboy.log
god
good
god
goood
2)? 匹配之前的项1次或者0次。
例:
[root@server oldboy]# grep -Eo "go?d" oldboy.log
god
god
gd
[root@server oldboy]# [root@server oldboy]# grep -Eo "g?d" oldboy.log
d
d
d
d
d
d
d
d
d
d
gd
[root@server oldboy]#
3)| 用或的方式查找多个符合的字符串。
例:
[root@server oldboy]# grep -E "g?d|good" oldboy.log
I am oldboy teacher!
I like badminiton ball,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com.
my god , i am not oldboy,but OLDBOY!
good
god
goood
gd
4)() 找出“用户组”字符串。
例:
[root@server oldboy]# grep -E "g(la|oo)d" oldboy.log
good
[root@server oldboy]# ^;表示以什么什么开头,例如:^d:表示以d开头的文件
例:
[root@server etc]# ls -l|grep '^d' //匹配以"d"开头的文件
drwxr-xr-x. 3 root root 4096 11月 25 02:44 abrt
drwxr-xr-x. 4 root root 4096 11月 25 02:46 acpi
drwxr-xr-x. 2 root root 4096 11月 25 02:46 alsa
drwxr-xr-x. 2 root root 4096 11月 25 02:44 alternatives
drwxr-x---. 3 root root 4096 11月 25 02:46 audisp
drwxr-x---. 3 root root 4096 11月 25 02:46 audit
drwxr-xr-x. 2 root root 4096 11月 25 02:46 bash_completion.d
drwxr-xr-x. 2 root root 4096 12月 2 22:06 blkid
drwxr-xr-x. 2 root root 4096 3月 10 2015 chkconfig.d
drwxr-xr-x. 2 root root 4096 11月 25 02:44 compat-openmpi-psm-x86_64
drwxr-xr-x. 2 root root 4096 11月 25 02:45 compat-openmpi-x86_64 $;表示以什么什么结尾,例如:/$:表示以/为结尾的,,oldboy$:以oldboy为结尾的
例:
[root@server etc]# ls -lF|grep "/$"
drwxr-xr-x. 3 root root 4096 11月 25 02:44 abrt/
drwxr-xr-x. 4 root root 4096 11月 25 02:46 acpi/
drwxr-xr-x. 2 root root 4096 11月 25 02:46 alsa/
drwxr-xr-x. 2 root root 4096 11月 25 02:44 alternatives/
drwxr-x---. 3 root root 4096 11月 25 02:46 audisp/
drwxr-x---. 3 root root 4096 11月 25 02:46 audit/
drwxr-xr-x. 2 root root 4096 11月 25 02:46 bash_completion.d/
======================================================================== 环境变量:
PATH 系统路径变量,执行ls,cp等非内置命令时,系统会查找PATH里对应的路径是否有,如果没有就报告找不到该命令;
当执行which cp来查看命令所在路径的时候,也是从PATH变量去搜索。 临时修改[root@server ~]# export PATH="/tmp:$PATH",永久修改前面临时修改的命令放到/etc/profile下,使用source /etc/profile使得修改立刻生效。 学习中遇到的命令:
[root@server cron]# cat /etc/rc.local //开机启动相当于windowsn开始菜单中启动选项 [root@server ~]# /etc/init.d/iptables stop //关闭防火墙 [root@server ~]# yum -y install lrzsz //安装windows<===>linux之间传输文件的工具rz [root@server ~]# >/etc/udev/rules.d/70-persistent-net.rules //解决vm克隆虚拟机后网卡不能启用 [root@server ~]#echo ">/etc/udev/rules.d/70-persistent-net.rules" >/etc/rc.local [root@server ~]# cat /etc/redhat-release //查看版本
CentOS release 6.7 (Final)
[root@server ~]# uname -r //查看内核
2.6.32-573.el6.x86_64
[root@server ~]# uname -m //32位还是64位
x86_64
[root@server ~]# hostname //主机名
server [root@server selinux]# runlevel //查看运行级别
N 3 [root@server ~]# find /root/data/ -type f -name "*.txt" -exec ls -l {} \;
-rw-r--r--. 1 root root 7 Nov 27 07:05 /root/data/c/test.txt
-rw-r--r--. 1 root root 0 Nov 25 23:42 /root/data/zhurui4.txt
-rw-r--r--. 1 root root 7 Nov 27 07:05 /root/data/a/ddd/fff/test.txt
-rw-r--r--. 1 root root 7 Nov 27 07:05 /root/data/a/test.txt
-rw-r--r--. 1 root root 18 Nov 27 07:05 /root/data/test.txt [root@server ~]# find /root/data/ -type f -name "*.txt"|xargs ls -l //找到的结果可以用任何方式去处理
-rw-r--r--. 1 root root 7 Nov 27 07:05 /root/data/a/ddd/fff/test.txt
-rw-r--r--. 1 root root 7 Nov 27 07:05 /root/data/a/test.txt
-rw-r--r--. 1 root root 7 Nov 27 07:05 /root/data/c/test.txt
-rw-r--r--. 1 root root 18 Nov 27 07:05 /root/data/test.txt
-rw-r--r--. 1 root root 0 Nov 25 23:42 /root/data/zhurui4.txt [root@server ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@server ~]# grep PATH /etc/profile
case ":${PATH}:" in
PATH=$PATH:$1
PATH=$1:$PATH
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
[root@server ~]# export PATH="/tmp:$PATH" //临时新增变量,重启会失效
[root@server ~]# echo $PATH
/tmp:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@server ~]# which oldboy
/usr/bin/which: no oldboy in (/tmp:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)
[root@server ~]# touch /tmp/oldboy //新建命令
[root@server ~]# chmod +x /tmp/oldboy //给命令执行权限
[root@server ~]# which oldboy
/tmp/oldboy
#PermitRootLogin yes //禁止管理员远程连接 修改字符集:
路径:/etc/sysconfig/i18n
[root@server ~]# sed -i 's#LANG="en_US.UTF-8"#LANG="zh_CN.UTF-8"#g' /etc/sysconfig/i18n
[root@server ~]# . /etc/sysconfig/i18n ======= source /etc/sysconfig/i18n //使配置立即生效
[root@server ~]# echo $LANG
zh_CN.UTF-8 时间同步任务计划:
[root@server ~]# /usr/sbin/ntpdate time.nist.gov //同步互联网时间命令 [root@server ~]# echo "*/5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>%1" >>/var/spool/cron/root //添加定时任务
[root@server ~]# crontab -l
*/5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>%1
[root@server ~]# 修改显示历史记录命令环境变量:
export HISTSIZE=5 //修改默认显示历史记录的命令行
export HISTFILESIZE=5 //控制.bash_history文件显示行数
[root@server ~]# cat ~/.bash_history
. /etc/sysconfig/i18n
echo $LANG
man cd
history
tree 交互给用户生成密码:
useradd oldboy
echo 123456|passwd --stdin oldboy 修改远程连接时间:
export TMOUT=5
echo "export TMOUT=5" >> /etc/profile
tail -1 /etc/profile //查看最近修改/etc/profile配置文件
source /etc/profile
echo $TMOUT 文件描述符概念:
1、表示形式为整数数字,一般使用(0-65535)范围;
2、进程使用的时候会占用文件描述符(标识打开的文件) 查看默认文件描述符:
[root@server cron]# ulimit -n
1024
3、调整文件描述符
[root@server cron]# ulimit -SHn 65535 //临时修改
[root@server cron]# echo '* - nofile 65535 ' >>/etc/security/limits.conf <===>echo "ulimit -SHn 65535" >>/etc/rc.local 内核优化配置:
vim /etc/sysctl.conf //WEB服务,iptables服务调优配置文件
sysctl -p //让配置生效 [root@server ~]# > /etc/issue //隐藏linux软件名及版本号
[root@server ~]# > /etc/issue.net 锁定系统配置文件,防止恶意修改
[root@server ~]# chattr +i /etc/passwd /etc/group /etc/shadow /etc/gshadow /etc/inittab
[root@server ~]# chattr -i /etc/passwd /etc/group /etc/shadow /etc/gshadow /etc/inittab //解除锁定
[root@server ~]# lsattr /etc/passwd /etc/group /etc/shadow /etc/gshadow /etc/inittab //查看文件锁定状态
[root@server ~]# mv `which chattr` /opt/oldboy //防止黑客找到文件,可以将配置文件移动到其他地方 [root@server ~]# grep -v "nologin$" /etc/passwd //将不能登录的账号排除掉
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
oldboy:x:500:500::/home/oldboy:/bin/bash
oldgirl:x:501:501::/home/oldgirl:/bin/bash
msn:x:502:502::/home/msn:/bin/bash 为grub菜单加密码 [root@server ~]# /sbin/grub-md5-crypt
Password:
[root@server ~]# vim /etc/grub.conf //将生成的密码填写到如下配置文件中
13 hiddenmenu
密码生成文件加到13-14行之间
14 title CentOS 6 (2.6.32-573.el6.x86_64) 内核优化之禁PING [root@server ~]# echo "net.ipv4.icmp_echo_ignore_all=1" >> /etc/sysctl.conf
[root@server ~]# sysctl -p //让配置生效 配置Yum源配置文件路径:
[root@server ~]# cat /etc/yum.repos.d/CentOS-Base.repo [root@server ~]# cd /etc/yum
yum/ yum.conf yum.repos.d/
[root@server ~]# cd /etc/yum.repos.d/
[root@server yum.repos.d]# ls
CentOS-Base.repo CentOS-fasttrack.repo CentOS-Vault.repo
CentOS-Debuginfo.repo CentOS-Media.repo
[root@server yum.repos.d]# cp CentOS-Base.repo CentOS-Base.repo.20151201.bak //拷贝原有的centos-base-repo
[root@server yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo
CentOS-Base.repo.20151201.bak CentOS-fasttrack.repo CentOS-Vault.repo
[root@server yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo
CentOS-Base.repo.20151201.bak CentOS-fasttrack.repo CentOS-Vault.repo
[root@server yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo //从阿里云下载yum源 setuid:如果命令有4755的权限,对应关系为-rwsr-xr-x=====4755
[root@server test]# find / -type f -perm 4755|xargs ls -l
-rwsr-xr-x. 1 root root 77336 10月 15 2014 /bin/mount
-rwsr-xr-x. 1 root root 38200 7月 24 01:55 /bin/ping
-rwsr-xr-x. 1 root root 36488 7月 24 01:55 /bin/ping6
-rwsr-xr-x. 1 root root 34904 10月 15 2014 /bin/su
-rwsr-xr-x. 1 root root 53472 10月 15 2014 /bin/umount
-rwsr-xr-x. 1 root root 10272 10月 15 2014 /sbin/pam_timestamp_check
-rwsr-xr-x. 1 root root 34840 10月 15 2014 /sbin/unix_chkpwd
-rwsr-xr-x. 1 root root 54496 2月 20 2015 /usr/bin/at
-rwsr-xr-x. 1 root root 66352 4月 7 2015 /usr/bin/chage
-rwsr-xr-x. 1 root root 51784 3月 30 2015 /usr/bin/crontab
-rwsr-xr-x. 1 root root 71480 4月 7 2015 /usr/bin/gpasswd
-rwsr-xr-x. 1 root root 36144 4月 7 2015 /usr/bin/newgrp 只有拥有s权限,则代表这个命令具有所属用户root的权限,不管什么用户都可以执行! linux优化;
1、建立普通账号,使用普通账号登录
2、处理selinux
3、处理防火墙
4、精简开机自启动服务:sshd,network,crond,rsyslog,sysstat
5、linux最小化安全理念; /boot/ /var/ /dev/ /lib/ /sbin/ /usr/ /tmp/ /mnt/ /etc/ /bin/ /opt/