. -> 当前目录 .. -> 上一级目录 .file/.dir -> 隐藏文件/文件夹
【ls】 查看指定目录文件
ls
命令是最经常使用的linux命令,要配合着选项使用。php
经常使用命令 ls -lh # 方便查看文件大小 ls -AsSh
【pwd】:查看当前目录html
pwd等价于/bin/pwd -L,显示当前绝对路径,若是是连接,则显示连接路径 pwd -P等价于/bin/pwd -P,显示实际路径,而非连接路径 若是文件夹被临时删除,pwd仍是显示未删除文件夹的那个路径,这时候可使用/bin/pwd,就会提示当前路径不存在
【cd】:切换目录node
cd - # 上一目录 cd ~ # 家目录 cd # 家目录 cd .. # 上一目录 cd !$ # 将上命令的参数作为cd 参数
【touch】:新建文件mysql
1. 建立新文件同时能够指定一些时间参数 $ touch newfile 2. 一次性建立多个文件 $ touch {1..10}.txt
能够对已有文件修改时间戳(ll显示的时间)linux
【1】 touch -d [[CC]YY]MMDD text touch -t [CC[YY]MMDDhhmm[.SS] text CC为年数中的前两位,即”世纪数”;YY为年数的后两位,即某世纪中的年数.若是不给出CC的值 touch -d 20171004 text touch -t 201710041330.30 text 【2】 -r:以另外一文件为基准更新时间戳 以file1的时间戳为基准,将file2的改为同样的 touch -r file1 file2 【3】其余不经常使用参数 -a 或--time=atime或--time=access或--time=use 只更改存取时间。 -c 或--no-create 不创建任何文档。 -f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。 -m 或--time=mtime或--time=modify 只更改变更时间。
【mkdir】:新建文件夹git
# 建立一个或多个的同级目录 mkdir adir bdir # 递归建立目录 # 当前目录下并无cdir这个文件夹,若是使用单纯mkdir cdir/ddir会报错。 # 应该使用 mkdir -p cdir/ddir # 指定权限 mkdir -m 777 dir_name # 显示建立信息(成功或失败) mkdir -v dir_name # 使用!$快速进入新建文件夹 mkdir ming cd !$
【rm | rmdir】github
# 只能删除空文件夹 rmdir dirname # 删除当前文件夹下全部文件并不提示 rm -f * # 递归删除dirname下全部文件 rm -r dirname # 上面两者结合,递归删除dirname下全部文件并不提示 rm -rf dirname
【cp】:复制文件或目录web
# 递归复制old_dir目录下全部文件和文件夹到new_dir文件夹下 cp -r old_dir new_dir
注意:默认cp拷贝文件后会使用预设权限,即其余人没有更改的权限,须要使用-p或
者-a文件全部的全部特性都一块儿复制过来 (拉取源站数据缓存,不更改文件最后修改
时间)正则表达式
【mv】:移动或重命名sql
# 移动/tmp/test/sample.txt文件到当前目录下 mv /tmp/test/sample.txt ./
【cat 】查看文件
做用:文本文件查看和链接工具,用于查看文本文件的内容。
命令格式:cat file 常常和more、head、tail、less以及管道命令结合使用,如:cat file | more、cat file | head等。
三个功能
1.一次显示整个文件:cat filename 2.从键盘建立一个文件:cat > filename 建立文件,输入内容,Ctrl+d 结束 3.将几个文件合并为一个文件:cat file1 file2 > file
命令参数
-A, --show-all 等价于 -vET -b, --number-nonblank 对非空输出行编号 -e 等价于 -vE -E, --show-ends 在每行结束处显示 $ -n, --number 对输出的全部行编号,由1开始对全部输出的行数编号 -s, --squeeze-blank 有连续两行以上的空白行,就代换为一行的空白行 -t 与 -vT 等价 -T, --show-tabs 将跳格字符显示为 ^I -u (被忽略) -v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 以外
【tac】反向查看
cat是第一行到最后一行,tac是最后一行到第一行
【head | tail】
# 显示前10行 head xs.txt 等价于 cat xs.txt|head 等价于 cat xs.txt|head -n 10 # 显示最后10行 tail xs.txt 等价于 tail -n 10 xs.txt # 显示除末尾10行外 head -n -10 xs.txt
【more | less】
更具体命令能够参考:Linux中more和less命令用法
【more】 # 回车就往下一行显示,空白键就往下一页显示 # 按 b 键就会往回一页显示,按 q 就会退出 more xs.txt # 查找比较鸡肋,并从该处前两行开始显示输出 more +/查找内容 xs.txt 【less】 # 和more几乎同样的功能,可是less更灵活(可使用任何vim的移动命令,还有标记功能很使用),好比查找命令,直接像vim同样输入/便可 less xs.txt ma : 使用 a 标记文本的当前位置 'a : 导航到标记 a 处 F :实现和tail -f的功能,实时输出内容,tail +F xs.txt
小练习
选取xs.txt的10-20行
head -n 20 xs.txt|tail # 更快捷的方法 sed -n '10,20p' xs.txt
wc
统计文件信息
# 统计全部信息(行数、单词数、字符数) $ wc /etc/passwd # 行数 $ wc -l /etc/passwd # 单词数 # 中文没法统计 $ wc -w /etc/passwd # 字节数 $ wc -c /etc/passwd # 字符数 $ wc -m /etc/passwd # 最长行字节数 $ wc -L /etc/passwd
sort
$ cat /etc/passwd | sort $ cat /etc/passwd | sort -r # 以:为分隔符,对第三列排序,所得的结果,再经过cut以:为分隔符取第三列 $ cat /etc/passwd | sort -t ":" -k 3 |cut -d ":" -f 3
uniq
# 显示每行重复频率 uniq -c 文件名 # 只显示有重复的行 uniq -d 文件名
wget http://labfile.oss.aliyuncs.com/courses/1/data1 # 里面是包含一些命令使用的列表 # 要求:从里面找出出现频率次数前3的命令并保存在/home/result $ cat data1 | cut -c 8-|cut -d " " -f 1 |sort | uniq -dc | sort -r -n -k1 | head -n 3 > /home/result
tr
tr
能够删除或者去重某文本信息中的某些文字。还能够进行替换操做
# 删除hello,里面全部l,o字符 $ echo 'hello' | tr -d 'lo' # 去重hello里的l $ echo 'hello' | tr -s 'l' # hello里,l换成a,e换成b $ echo 'hello' | tr 'le' 'ab'
col
将tab转换为等数量的空格,或者反转
-x tab转空格 -h 空格转tab(默认)
# 查看 /etc/protocols 中的不可见字符,能够看到不少 ^I ,这其实就是 Tab 转义成可见字符的符号 $ cat -A /etc/protocols # 使用 col -x 将 /etc/protocols 中的 Tab 转换为空格,而后再使用 cat 查看,你发现 ^I 不见了 $ cat /etc/protocols | col -x | cat -A
sed
文件处理工具。
使得不须要打开文件就能够对文件进行操做(删除,替换,选取,新增)。以行为单位进行处理。
经常使用选项
-n∶通过处理后的结果显示出来。不影响真实文件。 -e:直接在指令列模式上进行 sed 的动做编辑;(没明白) -f∶直接将 sed 的动做写在一个档案内, -f filename 则能够执行 filename 内的sed 动做; -i∶直接修改读取的档案内容,而不是由屏幕输出。
经常使用命令:
a∶新增, a 的后面能够接字串,而这些字串会在新的一行出现(目前的下一行)~ c∶取代, c 的后面能够接字串,这些字串能够取代 n1,n2 之间的行! d∶删除,由于是删除啊,因此 d 后面一般不接任何咚咚; i∶插入, i 的后面能够接字串,而这些字串会在新的一行出现(目前的上一行); p∶列印,亦即将某个选择的资料印出。一般 p 会与参数 sed -n s∶取代,能够直接进行取代的工做哩!一般这个 s 的动做能够搭配正规表示法!例如 1,20s/old/new/g 就是啦!
删除某行
sed '1d' somefile #删除第一行 sed '$d' somefile #删除最后一行 sed '1,2d' somefile #删除第一行到第二行 sed '2,$d' somefile #删除第二行到最后一行 # 以上,只是输出,源文件并不会替换,若要对源文件进行修改,需加 -i sed -i '1,2d' somefile
显示某行
sed -n '1p' somefile #显示第一行 sed -n '$p' somefile #显示最后一行 sed -n '1,2p' somefile #显示第一行到第二行 sed -n '2,$p' somefile #显示第二行到最后一行
使用模式进行查询
sed -n '/ruby/p' somefile #查询包括关键字ruby所在全部行 sed -n '/\$/p' somefile #查询包括关键字$所在全部行,使用反斜线\屏蔽特殊含义
插入行
sed '1a drink tea' somefile #第一行后增长字符串"drink tea" sed '1,3a drink tea' somefile #第一行到第三行后增长字符串"drink tea" sed '1a drink tea\nor coffee' somefile #第一行后增长多行,使用换行符\n
替换行
sed '1c Hi' somefile #第一行代替为Hi sed '1,2c Hi' somefile #第一行到第二行代替为Hi
替换行中部分数据
sed 's/ruby/bird/g somefile' #替换ruby为bird,记住这个并不会更改源文件,只是输出 sed 's/ruby//g' somefile #删除ruby
【注意】:以上对源文件都不作修改,若要修改,要加上-i
cut
【显示每行的某位置的内容】
# 前五个(包含第五个) $ cut /etc/passwd -c -5 # 前五个以后的(包含第五个) $ cut /etc/passwd -c 5- # 第五个 $ cut /etc/passwd -c 5 # 2到5之间的(包含第五个) $ cut /etc/passwd -c 2-5
【以指定的分隔符分隔,并返回某些列】
# 返回第一列和第六列 $ cut /etc/passwd -d ":" -f 1,6
awk
awk是一个强大的文本分析工具。
简单来讲awk就是把文件逐行的读入,以空格为默认分隔符将每行切片(至关于Excel的分列),切开的部分再进行各类分析处理。
# 打印空白行,文件有几个空行,就输出几个空行 awk '/^$/{print "This is a blank line"}' awk.txt # 打印所有列,引用变量 awk '{print $0}' awk.txt # 打印前三列,引用变量 awk '{print $1,$2,$3}' awk.txt # 指定间隔符为空格,获取第四列 awk -F" " '{print $4}' awk.txt # 重组表格 awk -F ':' '{print $1"\t"$7}' awk.txt # 表头和结尾,会先输出name,shell awk -F ':' 'BEGIN {print "name,shell"} {print $1","$7} END {print "blue,/bin/nosh"}' awk.txt # 在awk中引用变量变量,在原理是拼接. limit=30 df -Th| grep "/dev/vd" | sed 's/%//g' |awk '{ if($6>'"$limit"') print $6}'
nl
-b :指定行号指定的方式,主要有两种:
-b a :表示不管是否为空行,也一样列出行号(相似 cat -n); -b t :若是有空行,空的那一行不要列出行号(默认值);
-n :列出行号表示的方法,主要有三种:
-n ln :行号在萤幕的最左方显示; -n rn :行号在本身栏位的最右方显示,且不加 0 ; -n rz :行号在本身栏位的最右方显示,且加 0 ;
-w :行号栏位的占用的位数。 nl -b a -n rz -w 3 text
在PATH变量指定的路径中,搜索某个系统命令(可执行文件
)的位置,而且返回第一个搜索结果。
参数选项(基本不用)
-n 指定文件名长度,指定的长度必须大于或等于全部文件中最长的文件名。 -p 与-n参数相同,但此处的包括了文件的路径。 -w 指定输出时栏位的宽度。 -V 显示版本信息
搜索并筛选显示结果。
该命令常常配合管道命令来控制输出。
如下 是经常使用的选项:
【很是好用:不打开文件,直接搜索指定目录下文件内的内容】
$ vim a # wongbingming $ vim b # wangbingming $ grep -rnI "bingming" . # 固然这里也可使用正则表达式 ./a:1:wongbingming ./b:1:wangbingming 参数解释 -r 递归遍历各个文件夹下的全部文件 -n 显示在文件中的第几行查询到 -I 忽略二进制文件
定位可执行文件、源代码文件、帮助文件在文件系统中的位置。
个搜索很快,由于它并无从硬盘中依次查找,而是直接从数据库中查询。
$ whereis who
参数选项
-b 定位可执行文件。 -m 定位帮助文件。 -s 定位源代码文件。 -u 搜索默认路径下除可执行文件、源代码文件、帮助文件之外的其它文件。 -B 指定搜索可执行文件的路径。 -M 指定搜索帮助文件的路径。 -S 指定搜索源代码文件的路径。
locate:快而全
经过/var/lib/mlocate/mlocate.db
数据库查找,不过这个数据库也不是实时更新的,系统会使用定时任务天天自动执行updatedb
命令更新一次,因此有时候你刚添加的文件,它可能会找不到,须要手动执行一次 updatedb
命令(在咱们的环境中必须先执行一次该命令)。
$ updatedb $ locate /etc/sh # 查找/etc/目录下全部以sh开头的文件
鸟哥的Linux私房菜-find
天天一个linux命令(19):find 命令概览
天天一个linux命令(20):find命令之exec
scp
实现不一样机器之间传输数据(加密)
scp详解
curl
Curl是一个命令行方式下传输数据的开源传输工具,支持多种协议包括:FTP,HTTP,HTTPS,IMAP,POP3,TELNET等。一样支持HTTP POST方法,PUT方法,FTP上传,cookie,用户名/密码认证,下载文件端点续传等,功能十分强大。
经常使用的,用于模拟浏览器请求。
curl详解
wget
测试速率
wget -S http://115.231.74.93:80/lvs.lxdns.net/test.rar && rm -rf test.rar*
zcat
查看压缩的文件内容
zcat file.gz
Linux上的压缩格式比Windows上多不少,在 Windows 上最多见的不外乎这三种 *.zip
,*.rar
,*.7z
后缀的压缩文件。而在 Linux 上面常见的格式除了以上三种外,还有 *.gz
,*.xz
,*.bz2
,*.tar
,*.tar.gz
,*.tar.xz
,*.tar.bz2
,对于常见的压缩格式,tar已经能够解决,因此这里只介绍tar。tar并不能压缩和解压7z,zip等其余文件
tar
压缩示例
# test是当前目录下一个文件夹 $ tar -czvphf test.tar.gz old_folder
参数解释
-c 指明建立tar文件 -z 指明生成gz文件 -v 可视输出,不加就静默压缩 -f 指明压缩后的文件名,必须-f后必须紧跟文件名,不然无效 -p 当在其余主机还原时但愿保留文件的属性 -h 备份连接指向的源文件而不是连接自己
解包示例
$ mkdir new_folder $ tar -xzvf test.tar.gz -C new_folder
参数解释
-x 解压命令 -z 指明源文件是gz文件 -f 指明压缩后的文件名,必须-f后必须紧跟文件名,不然无效 -v 可视化输出解包过程,通常不加,静默解包 -C 指明解压到哪一个目录
其余压缩格式
*.tar.gz -z *.tar.xz -J *tar.bz2 -j
gz
最简单的压缩格式
# 压缩 gzip somefile # 解压 gzip -d somefile.gz
7zip
yun install p7zip # 解压 7za x file.7z # 压缩 # 先将要压缩的文件都放到~/test/ 下 7za a file.7z ~/test/
zip
# 解压 unzip some.file # 压缩 zip -r some.zip file1 file2 dir1 dir2...
# 解压rpm包 rpm2cpio xxx.rpm |cpio -div # 查看文件属于哪一个rpm包 rpm -qf /path/filename # 使用rpmrebuild从新生成rpm包 # 使用rpmrebuild须要依赖rpmbuild:yum install -y rpmbuild rpmrebuild xxx
变量分为用户变量(env)和shell变量(set)
# 添加shell变量 [root@host ~]# myuser=wangbm [root@host ~]# echo $myuser wangbm [root@host ~]# env|grep myuser [root@host ~]# set|grep myuser myuser=wangbm # 添加用户变量,会发现用户变量会覆盖shell变量 [root@host ~]# export myuser=wangbingming [root@host ~]# env|grep myuser myuser=wangbingming [root@host ~]# set|grep myuser myuser=wangbingming # 删除环境变量 [root@host ~]# unset myuser [root@host ~]# env|grep myuser [root@host ~]# set|grep myuser
一些系统的变量
# 这里生成的变量,对全部用户生效 /etc/profile # 对特定user生效 /root/.bash_profile /home/user/.bashrc # 注意修改文件后,要手动source一下
# 查询开机时间 $ who -b # 查询系统内核 $ uname -r # 查询是否安装某个rpm包 $ rpm -qa|grep nova # service 文件目录 $ /usr/lib/systemd/system # centos 7.x $ /etc/init.d # centos 6.x # 查询开机自启列表 $ systemctl list-unit-files $ chkconfig --list # 查看系统版本 $ cat /etc/redhat-release # ------或者------ $ yum install redhat-lsb -y $ lsb_release -a # 进程树 $ pstree -p # 查看系统运行多长时间 $ uptime/w # 查看系统版本 lsb_release -a # 查看CPU信息 $ cat /proc/cpuinfo $ numactk -H
输出操做系统的当前日期、时间和时区。
# -s参数用于修改当前的日期和时间 date –s 2007-10-17 date –s 18:05:00 用法:cd /CNCLog/cache/qsLogBackSrcFull/bkDir/`date +%Y-%m-%d`
Linux的分区,不一样于Windows,必定要区别对待,否则会搞不明白。
Linux的分区的过程经历如下几个步骤
1. 设备分区:对硬盘存储空间的划分 2. 格式化:写入文件系统 3. 挂载:将分区挂载到目录上,才能访问数据
关于硬件对应的设备文件名,能够参照下图
其中以硬盘为例来讲明
硬盘能够分为三种 hd : IDE硬盘接口(淘汰,接口最大传输100来M) sd : SCSI硬盘接口(淘汰,接口最大传输200M),和SATA硬盘接口 如今都是SATA的硬盘接口 /dev/sda1 表示的是第一块(a)SATA硬盘的第一个分区(1) /dev/sdb2 表示的是第二块(b)SATA硬盘的第二个分区(2)
分区类型
能够分为:主分区
、扩展分区
、逻辑分区
【主分区】:最多只能有4个 (受硬盘结构限制,若是硬盘结构不变,将都被限制) 【扩展分区】: 1. 最多只能有一个 2. 主分区+扩展分区,一共只能有四个,能够少于 3. 扩展分区下面,不能存放数据,只能进行逻辑分区的划分 【逻辑分区】:挂载后就是一个目录下的空间,数量不受限制
格式化作了哪些事
【目的】 1. 不是为了清空数据 2. 主要是为了写入文件系统 【文件系统】 Windows: FAT16(每一个分区大小最大不能超过2G),FAT32(单个分区大小最大16G,单个文件大小不能超过4G),NTFS Linux:ext2,ext3,ext4 ->>>>> 越日后越先进 【写入文件系统作了啥】 1. 分数据块 把空间分红若干个等大小的数据块(block),每一个大小4kb 若是咱们有一个文件10kb,那么会占用3个数据块,实际大小就会是12kb 你能够查看一个文件夹的大小,也都是4kb ll -l 2. 创建数据表 一个文件被分红若干个的数据块,那么若是有用户访问的时候,就须要有一个表把这些数据块拼凑起来。 这个数据表就记录了这个文件由哪些数据块组成。
分区说明
必须分区 / 根目录,最高级目录,不分配的话,全部的文件都没存储,软件无法运行 /swap 交换分区,虚拟内存,4G如下,分2倍,4G以上,和真实内存同样便可 推荐分区 /boot 启动分区,防止/ 分区写满,致使系统没法启动,不须要很大,200M足矣 逻辑分区号:只能从5开始,即便3,4没有被使用
关于分区的操做能够参考这个: 分区操做
## 查看分区表信息 $ sudo fdisk -l $ lsblk # 删除分区前,先确认有没有挂载点,有的话须要先umount卸载 $ fdisk /dev/vdb 而后再按d,w
ps、kill、killall
参考文档:ps 命令的十个简单用法
# 查看当前全部进程 ps -aux # 终止pid为1095的进程 kill 1095 # 强制终止pid为1095的进程 # 9是信号强度,强制杀死 # 其余信号,-1 该信号让进程正常关闭,而后从新读取配置文件以后重启 # -15 正常结束进程的信号,kill命令默认信号 kill -9 1095 # 终止指定程序 killall 程序名 # pkill pkill -9 httpd 强制终止进程 pkill -t -9 pts/1 强制杀死pts/1虚拟终端登入的进程
top
经常使用的性能分析工具,可以实时显示系统中各个进程的资源占用情况,相似于Windows的任务管理器。
linux的top命令参数详解
top 实时得查看进程的状态,以及系统的一些信息(如 CPU、内存信息等),3s刷新一次 ps 来静态查看当前的进程信息 pstree 来查看当前活跃进程的树形结构。
pgrep
[root@wangbm web]# pgrep keepalived 21955 21956 21957 [root@wangbm web]# ps -ef|grep keepalived root 21955 1 0 21:27 ? 00:00:00 /usr/sbin/keepalived -D root 21956 21955 0 21:27 ? 00:00:00 /usr/sbin/keepalived -D root 21957 21955 0 21:27 ? 00:00:00 /usr/sbin/keepalived -D root 22035 12159 0 21:33 pts/0 00:00:00 grep --color=auto keepalived
df
显示磁盘的相关信息
df -Th
free
输出内存的使用状况,m,g分别是指定单位,默认是kb
free -m free -g
total 表示总内存大小;
used和free分别表示被使用和空闲内存大小;
share指可被多个进程共同享有的内存; buffers和cached用来保留最近访问的文件和数据,当其余进程须要更多的内存时,这些内容能够被缩减; Free命令还能够输出交换空间的相关信息。
ifconfig
显示或设置网络设备
last
列出目前与过去登入系统的用户相关信息。通常可用来查看系统重启记录
history
屏幕输出当前用户在命令行模式下执行的最后(1000个)命令
passwd
这个用于修改密码
非交互式修改密码
echo 'root12#$'| passwd --stdin root
reboot/shutdown
重启/关机
reboot/shutdown -r now # reboot [-n][-w][d][-i] 从新启动计算机,使用权限是系统管理员 -n 重启前不将记录写回硬盘 -w 并非真的重启,只是把记录写道/var/log/wtmp文件中 -d 不把记录写入/var/log/wtmp文件中 -i 重启谦先把全部与网络相关的装备中止
rpm
# 安装rpm包 rpm -ivh monitor-system-1.2-1.i386.rpm # 更新rpm包 rpm -U/Fvh (F只更新已存在的文件) # 查询包中的文件 rpm -ql monitor-system # 查询文件所属的包 rpm -qf /usr/local/squid/etc/squid.conf(绝对路径/到目录下查找) # 查询全部包 rpm –qa | grep squid # 卸载某个rpm包 rpm –e monitor-system
开启80端口
vi /etc/sysconfig/iptables # 在22端口下面添加一行 -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT # 重启防火墙 /bin/systemctl restart iptables.service
修改时区
# 由EDT(美国)改为CST(中国) $ mv /etc/localtime /etc/localtime.bak $ ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
查看机器链接的哪一个交换机
$ service lldpd restart $ lldpcli show nei sum # 查看JS_HuaiAnDXXZ4_166.3 ------------------------------------------------------------------------------- LLDP neighbors: ------------------------------------------------------------------------------- Interface: eth1, via: LLDP Chassis: ChassisID: mac 00:6b:8e:01:1a:07 SysName: JS_HuaiAnDXXZ4_165.132_IPMI Port: PortID: local 39 PortDescr: Ethernet1/0/39 TTL: 120 ------------------------------------------------------------------------------- Interface: eth0, via: LLDP Chassis: ChassisID: mac 58:69:6c:62:7b:c2 SysName: JS_HuaiAnDXXZ4_166.3 Port: PortID: ifname TenGigabitEthernet 0/41 PortDescr: TenGigabitEthernet 0/41 TTL: 121 -------------------------------------------------------------------------------
df
显示指定磁盘文件的可用空间。
这里要理解挂载的概念。
全部的设备(磁盘/等其余介质)都须要挂载在一个目录,Linux才能访问数据。
具体能够参考这篇文章:df 命令
经常使用命令
$ df -Th $ df -lh $ df -h 以1024来换算 $ df -H 以1000来换算 $ df -t ext3 指定设备类型 $ df -T 文件系统的类型 $ df -i 查看inode的使用状况
关于inode能够查看:inode的理解
du
查看目录的容量
$ du -h -d 0 ~ # 参数解释 -h 以人能看得懂的方式显示 -d 扫描的目录层级,0表示只有一个指定目录,1表示次级目录 ~ 是家目录,这里能够选你指定的目录 $ du -s # 查看当前所处目录总容量大小,单位是k,不可跟-d $ du -a # 查看当前所处目录及全部子目录的全部文件,单位是k,建议不用
查看文件的大小
$ du -h file.txt
dd
dd
命令用于转换和复制文件,不过它的复制不一样于cp
。以前提到过关于 Linux的很重要的一点,一切即文件,在 Linux上,硬件的设备驱动(如硬盘)和特殊设备文件(如/dev/zero
和/dev/random
)都像普通文件同样,只要在各自的驱动程序中实现了对应的功能,dd
也能够读取自和/或写入到这些文件。这样,dd
也能够用在备份硬件的引导扇区、获取必定数量的随机数据或者空数据等任务中。dd程序也能够在复制时处理数据,例如转换字节序、或在 ASCII
与 EBCDIC
编码间互换。
这里有篇文章讲得很好:Linux-dd命令详解
补充一点
# 输出到文件 $ dd of=test bs=10 count=1 # 或者 dd if=/dev/stdin of=test bs=10 count=1 # 输出到标准输出 $ dd if=/dev/stdin of=/dev/stdout bs=10 count=1 # 注 在打完了这个命令后,继续在终端打字,做为你的输入
前面说到dd在拷贝的同时还能够实现数据转换,那下面就举一个简单的例子:将输出的英文字符转换为大写再写入文件
dd if=/dev/stdin of=test bs=10 count=1 conv=ucase
# 制做虚拟镜像 $ dd if=/dev/zero of=virtual.img bs=1M count=256 $ mkfs.ext4 virtual.img # 使用一个循环设备(/dev/loop)链接虚拟镜像文件 $ sudo losetup /dev/loop0 virtual.img # 挂载前查看下当前已挂载的设备 $ sudo mount # 挂载 $ sudo mkdir /mnt/point $ sudo mount /dev/loop0 /mnt/point # 上面链接虚拟镜像文件和挂载设备两条命令能够合并成一条,挂载类型能够省略,会自动识别 $ sudo mount -o loop [-t ext4] /mnt/point # 再次查看挂载的设备,就能够发现咱们新挂载的 $ sudo mount # 卸载:必定要加-fl。否则没法卸载 $ sudo umount -fl /mnt/point # 查看全部与文件相关联的 loop 设备 $ losetup -a # 卸载 $ losetup -d /dev/loop0
$ sudo apt-get install at $ at now+5 minutes at>/bin/ls at><EOL> # 就是Ctrl+d job 2 at Sum Oct 15 14:58:00 2017 # 结束的时候,告知执行时间
$ atq # 能够查看当前还有那些定时任务,会显示任务号 # 查看具体任务代码 $ at -c <job_no> # 删除任务 $ atrm <job_no>
参考如下文字
作个示例
# 检查crond服务是否启动 $ ps aux|grep crond # 建立任务 $ crontab -e # 输入1 回车 # 任务是:天天凌晨3点备份日志到/home/temp/目录,文件名为日期 # 跳到文件尾部输入任务:* 3 * * * cp alternatives.lob /home/temp/$(date \%Y-\%m-\%d)。保存退出 # 注意%须要加\来转义,否则会被当成换行使用 # 查看任务 $ crontab -l # 删除任务(当前用户),固然也能够指定用户 $ crontab -r [-u user]
建立用户
【useradd和adduser区别】 useradd:只建立用户,建立完了用 passwd lilei去设置新用户的密码。更像一种命令。 adduser:会建立用户,建立目录,建立密码(提示你设置),作这一系列的操做。更像是一个程序,执行确认一系列操做。
删除用户
sudo deluser lilei --remove-home
切换用户
su [user] # 切换到其余用户,环境变量不变,仍是当前路径,若是不指定user,就切换到root su - [user] # 切换到其余用户,环境变量也切换,路径变为user家目录,若是不指定username,就切换到root,至关于使用user进行登陆
Ubuntu切换用户
# 切换到root $ sudo su # 切换到普通用户 $ su user
CentOS
$ su $ su root $ su - $ su -root $ su user $ su -user
用户组
1. 每一个用户都至少属于一个用户组,建立的时候若是不指定,就和当前用户的组同样(root用户组除外)。 2. 一个用户能够属于多个用户组。
# 查看所属用户组 $ groups [user]
UID/GID/组ID
# 显示相关信息,如要查看root用户的信息 id root # 全部文件都保存在/etc/)asswd vi /etc/passwd
管理用户:查看用户的UID和GID
管理密码:Linux下/etc/shadow文件
添加sudo用户组
【第一种方法】 在root下,visudo或者vi /etc/sudoers,找到root ALL=(ALL)的下一行添加一行,user ALL=(ALL),user是对应的用户名 【第二种方法】 在root下,使用命令sudo usermod -G sudo user,将user加入sudo用户组
sudo免密
当有些操做只有root用户才能操做的时候,怎么办?
1.咱们须要切换到root用户操做。
如何免密配置
vi /etc/sudoers.d/<user> # 添加内容 # 若是要指定特定的命令不须要密码的话,就把ALL替换成命令路径,以下 # NOPASSWD: /sbin/mount, (root) NOPASSWD: /bin/umount <user> ALL=(ALL) NOPASSWD:ALL Defaults:shiyanlou !requiretty # 有时候,虽然用户设置免密了,可是仍是须要输入密码,是group覆盖了,须要把group也设成免密。
参考资料:sudo免密
更改文件全部者和所属组
[sudo] chown 用户组:用户 文件/文件夹 # 以下只更改所属用户 [sudo] chowm 用户 文件/文件夹
修改文件权限
文件权限有读
、写
、执行
三种
分别对应数字4,2,1,也就是2^2,2^1,2^0
如何修改文件权限
【第一种方法】 chmod 777 文件 【第二种方法】:加减的方法 g、o 还有 u 分别表示 group、others 和 user,+ 和 - 分别表示增长和去掉相应的权限。 举个例子 好比一个文件权限是:-wr-wr-wr- chmod go-wr 文件 而后文件权限就变成:-wr-------
禁止修改、删除、移动文件
chattr -i
和chattr +i
+ :在原有参数设定基础上,追加参数。 - :在原有参数设定基础上,移除参数。 命令:chattr [ -RV ] [ -v version ] [ mode ] files A: 文件或目录的 atime (access time)不可被修改(modified), 能够有效预防例如手提电脑磁盘I/O错误的发生。 S: 硬盘I/O同步选项,功能相似sync。 a: 即append,设定该参数后,只能向文件中添加数据,而不能删除,多用于服务器日志文 件安全,只有root才能设定这个属性。 c: 即compresse,设定文件是否经压缩后再存储。读取时须要通过自动解压操做。 d: 即no dump,设定文件不能成为dump程序的备份目标。 i: 设定文件不能被删除、更名、设定连接关系,同时不能写入或新增内容。i参数对于文件 系统的安全设置有很大帮助。 j: 即journal,设定此参数使得当经过 mount参数:data=ordered 或者 data=writeback 挂 载的文件系统,文件在写入时会先被记录(在journal中)。若是filesystem被设定参数为 data=journal,则该参数自动失效。 s: 保密性地删除文件或目录,即硬盘空间被所有收回。 u: 与s相反,当设定为u时,数据内容其实还存在磁盘中,能够用于undeletion.
命令格式
iptables [-t table] 命令 [chain] [rules] [-j target] 【参数解释】 table 表名:filter、nat、mangle、raw,后二者不经常使用 命令 对链的操做命令 -P或–policy 定义默认策略 -L或–list 查看iptables规则列表 -A或—append 在规则列表的最后增长1条规则 -I或–insert 在指定的位置插入1条规则 -D或–delete 从规则列表中删除1条规则 -R或–replace 替换规则列表中的某条规则 -F或–flush 删除表中全部规则 -Z或–zero 将表中数据包计数器和流量计数器归零 chain 链名:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTIN rules 规则,能够说是匹配规则。 分为 1. 【通用匹配】 -s: 指定做为源地址匹配,必须是IP,取反,就加一个! -d: 表示匹配目标地址 -p: 用于匹配协议的(这里的协议一般有3种,TCP/UDP/ICMP) -i eth0:从这块网卡流入的数据,流入通常用在INPUT和PREROUTING上 -o eth0:从这块网卡流出的数据,流出通常在OUTPUT和POSTROUTING上 2. 【扩展匹配】 -p tcp: TCP协议的扩展。通常有三种扩展 --dport: 指定目标端口,--dport 21或者 --dport 21-23 (此时表示21,22,23),不能表示非连续端口 --sport: 指定源端口 --tcp-fiags: TCP的标志位(SYN,ACK,FIN,PSH,RST,URG) 对于它,通常要跟两个参数: 1.检查的标志位 2.必须为1的标志位 --tcpflags syn,ack,fin,rst syn = --syn 表示检查这4个位,这4个位中syn必须为1,其余的必须为0。因此这个意思就是用于检测三次握手的第一次包的。对于这种专门匹配第一包的SYN为1的包,还有一种简写方式,叫作--syn -p udp: UDP协议的扩展 --dport --sport -p icmp: icmp数据报文的扩展 --icmp-type: echo-request(请求回显), 通常用8 来表示 echo-reply (响应的数据包) 通常用0来表示
参考文章
# 在filter表里添加规则 -A INPUT -m state --state NEW -m tcp -p tcp --dport 8500 -j ACCEPT # 重启iptables $ service iptables restart # 监听端口 $ nc -lp 8500 & # 检测是否开启完成 $ netstat -tunl|grep 8500
# 按开放端口配置好后才可转发。 # 假设咱们如今要将36.250.x.x的8500端口转发到192.168.2.55的80端口上 # filter表 -A INPUT -m state --state NEW -m tcp -p tcp --dport 8500 -j ACCEPT # nat表 -A PREROUTING -d 36.250.x.x -m tcp -p tcp --dport 8500 -j DNAT --to-destination 192.168.2.55:80 # 测试一下,在浏览器输入 36.250.x.x:8500 # 就能够看到咱们的内容了。
# ubuntu 临时修改网络,须要刷新一下 ip addr flush dev ens4
6.1 定时任务
一、&& 方式:command1 && command2 若是command1执行成功,则执行command2 二、|| 方式:command1 || command2 若是command1执行失败,则执行command2
$ ps aux | grep mysqld # 将ps aux获得的结果传给grep命令
nohup
通常在一终端或一个SSH链接运行一个软件或服务,该软件或服务的生命周期受终端/SSH链接影响,关闭后就自动也中止。
为了将程序放在后台运行,可使用nohup命令
$ nohup 程序路径/程序名 &
给经常使用的长命令取别名,变成短的,提升效率
# 查看现有别名 $ alias # 添加别名 $ alias catgra='cat /var/lib/mysql/grastate.dat' # 取消别名状态 # 好比咱们的ll,系统默认给咱们加了别名,ll='ls -l --color=auto',也就是加上颜色效果 # 若是咱们不要颜色效果,能够这样使用转义符,使用原生的命令 $ \ll somedir
一个很好用的命令,常常用于管道符后,进行文本展现
$ mount sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime) proc on /proc type proc (rw,nosuid,nodev,noexec,relatime) devtmpfs on /dev type devtmpfs (rw,nosuid,size=3996196k,nr_inodes=999049,mode=755) securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime) # 使用后,t是按表格的形式展现,-s "@" 指定分割符 $ mount | column -t sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime) proc on /proc type proc (rw,nosuid,nodev,noexec,relatime) devtmpfs on /dev type devtmpfs (rw,nosuid,size=3996196k,nr_inodes=999049,mode=755) securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
>/dev/null 2>&1 &
分析下这个语句
command >/dev/null 2>&1 &
执行command后的标准输出不在屏幕显示,而是直接丢入/dev/null 垃圾桶,若是有错误输出,则重定向到标准输出。最后&表示在后台运行。
查看虚机的CPU是否支持虚拟化
egrep '(vmx|svm)' /proc/cpuinfo # 若是有标红的vmx(Intel)、svm(AMD)说明就支持,virtualbox不支持(坑) # 或者直接查看 vi /proc/cpuinfo
查看模块是否加载
lsmod | grep kvm
开启服务
# CentOS 6 service xx start # CentOS 7 systemctl start libvirtd
开机自启动服务
CentOS 6 chkconfig acpid on # CentOS 7 systemctl enable libvirtd
开启shh登陆,修改端口等配置
vi /etc/ssh/sshd_config ------------------------------------- Port 57891 PasswordAuthentication yes ClientAliveInterval 60 ClientAliveCountMax 10
关闭防火墙
setenforce 0 service firewalld stop chkconfig firewalld off
换yum源
yum install wget mv /etc/yum.repos.d/CentOS-Base.repo /root/ # 下载yum源,这里是CentOS6的,请下载对应版本 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo yum clean all yum makecache