1.cd: 变换目录
cd . 当前目录
cd .. 上一层目录
cd ../.. 上两层目录
cd - 前一个工作目录
cd ~ 家目录,自己的主文件夹 cd = cd~
cd / 根目录
cd ~account account这个使用者的主文件夹
2.pwd : 显示当前目录位置
3.mkdir : 创建新的目录
mkdir -p 111/222/333 递归
4.ls : 列出目录下的文件信息
ls -a 列出所有文件,包括以 . 开头的隐含文件
ls -l 列出文件 细信息 ( 权限、所有者、文件大小等 )
ls -i 列出文件的i结点号 ,或stat文件名太阳可以列出i结点号
ls -d 列出目录本身信息
ls -h 以容易理解的格式列出文件大小 (例如 1K 234M 2G)
ls -t 以文件修改时间排序
ls -r 逆序
5.vim: 新建文件 / 编辑文件内容
6.touch : 新建文件 / 更新文件的最新修改时间 (mtime内容数据变更 ctime 状态改变、权限与属性 atime内容被取用)
7.cat、more、head、tail、nl : 查阅文件内容
cat -n 带行号输出
nl 带行号输出(不计空行)
tac 从最后一行显示文件内容
more 一页 一页的显示文件内 容 ( q结束 空格翻下一页 回车翻下一行 )
less 与 more 类似, 但是比 more 更好的是, 他可以往前翻页 !
head 默认看头10行
head - 20 查看前20行
tail 默认看末10行
tailf 即时输出文件变化后追加的数据
od 以二进制 的方式读取文件内 容!
8.sed:
sed -i -r '2,4d' test.txt 删除第 2-4 行
sed -i -r '/^for/d' test.txt 删除以 for 开头的行
sed -i -r '/result/d' test.txt 删除含有字符串 result 的行
sed -i -r '1c hello world' test.txt 将第一行文字替换为 helloworld
sed -i -r '/return/c hello world' test.txt 将含有字符串 result 的行内容替换为 helloworld
sed '1i #########' test.txt 在第一行前新增一行内容为 ########
sed -i -r 's/aa/AA' test.txt 将每行的第一个aa替换为 AA
sed -i -r 's/aa/AA/g' test.txt 将全文所有的aa替换为 AA
sed -i -r '1s/b/B/g' test.txt 将第一行的b替换为B
sed -i -r '3,$s/aa/AA/g' test.txt 将第3行到最后一行的aa替换为AA
sed -i -r '/^[0-9]/s/bb/BB/g' test.txt 将以数字开头的行中 bb替换为BB
sed -i -r '/bin/s/ba/BA/g' test.txt 将含有字符串 bin 的行中 ba 替换为 BA
9.cut: 从文件的每一行剪切字节、字符和字段并写至标准输出。
cut -c 3 输出第3个字符
cut -c 3-5 输出第3-5 个字符
cut -c 3- 输出第个
cut -d 分隔符 自定义分隔符,默认为制表符。
cut -d :-f 3 -f与-d一起使用,指定显示哪个区域。
cut -b 以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
cut -n 取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的
范围之内,该字符将被写出;否则,该字符将被排除。
10.echo: 输出文字
1. echo aaa > a.txt #替换字符
2. echo bbb>>b.txt #追加字符串
3. tmp.txt: #清空tmp.txt
4. echo -n #不换行
5. echo -e #支持反斜线控制的字符转换
ln 源文件 目标文件 #建立硬链接文件
(源文件和硬链接文件的 inode 号是一样的)
(不论是删除源文件,还是删除硬链接文件,只要还有一个文件存在,这个文件据inode号都可以被访问)
ln -s 源文件 目标文件 #建立软连接文件
(源文件必须写成绝对路径,否则软链接文件会报错,硬链接没有这样的要求)
(删除软链接文件,源文件不受影响。而删除原文件,软链接文件将找不到实际的数据,从而显示文件不存在)
(软链接会新建自己的 inode 信息和 block,只是在 block 中不存储实际文件数据,而存储的是源文件的文件名及 inode 号)
ln -f 源文件 目标文件 #强制。如果目标文件已经存在,则删除目标文件后再建立链接文件
1. 按文件修改时间查找
find / -mtime +n : #列出在n天之前( 不含n天本身 )被更动过内容的文件文件名
find / -mtime -n : #列出在n天之内 ( 含n天本身 )被更动过内容的文件文件名
find / -newer file : #列出时间比文件file新的文件名称
find / -mtime 0 #列出过去系统上面24小时内有改动过的文件
find / -mtime 3 #列出三天前的 24 小时内有改动过的文件
2. 按文件权限查找
find / -user 用户名 #按所属用户名查找
find / -uid 用户id #按所属用户id查找
find / -nouser #找到不属于系统任何人的文件,主要用于査找垃圾文件
3. 与文件名称有关的
find / -name 文件名 #按名称查找,与文件名完全一致
find / -name“[A-Z*]” #正则表达式搜索,以大写字母开头
find / -not -name “ ” #不以...命名
find / -iname 文件名 #不区分大小写
find / -inum inode号 #按照 inode 号来搜索文件(区分硬链接文件的重要手段,因为硬链接文件的inode号是一致的)
find / -type l #按类型查找 (目录 d,文件 f ,链接文件 l)
4. 与文件大小有关; [+,-][b,k,M,G]注意大小写不同
find / -size +1k #搜索当大于1k的文件
5. 逻辑运算符
find / -size +1k -a -type l # -a 与,可省略
find / -size +1k -o -type l # -o 或
find / -not -name “ ” # 取反
6. 支持额外进行的动作;注意{}与\;之间有空格,指令不支持别名
find /usr/local/backs /usr/sbin -mtime +10 -name "host*" -exec ls -l {} \;
1.cp | scp: 复制文件
cp -r 复制目录(递归复制)
cp -a 连同文件的属 性( 权限、 用 户 、 时间 ) 一起复制,不同用户之间
scp [-r目录] 源 目的 不同机器之间复制
1. scp 本地位置 ip:文件位置的绝对路径----将本地文件拷贝到另一台机器
2. scp ip:文件位置的绝对路径 本地位置----将cat另一台机器的文件拷至本地
#将多个数据一次复制到同一个目录,最后面一定是目录
#备份文件
#更新文件夹内容
#创建快捷方式
2.rm : 移除文件
rm -r #递归,移除目录
rm -rf #强制移除,不提示
3.mv : 移动 / 重命名 (文件或目录)
#不需-r实现递归
mv -f #强制,不提示
rename #批量更改文件名 例:rename ad aa ad* 把以ad开头的文件中,ad全部更名为aa
4.stat 文件名或目录名:显示文件或文件系统的详细信息
stat #显示文件的详细信息
stat -f #査看文件所在的文件系统信息,而不是査看文件的信息
#文件详细信息包括 i节点号(ls -i),占用的block数,三种时间......
#三种时间的含义:
1. 用 cat 命令读取一下这个文件,改变文件的访问时间 (Access Time)。
2. 用 echo 命令向文件中写入点数据,那么文件的数据修改时间(Modify Time)就会发生改变。但是文件数据改变了,系统会认为文件
的状态也会改变,所以状态修改时间(Change Time)也会随之改变的状态也会改变,所以状态修改时间(Change Time)也会随之改变。
3. 如果只修改文件的状态(比如改变文件的所有者),而不修改文件的数据,则只会更改状态修改时间(ChangeTime)。
4. 而如果用 touch 命令再次触摸这个文件,则这个文件的三个时间 都会改变。touch 命令的作用就是这样的,记住即可。
5.tar: 打包命令
tar -cvf aaa.tar aaa #压缩文件 (c打包、v显示过程、f指定压缩文件名)
tar -xvf aaa.tar #解压缩文件 (x解压缩)
tar -zcvf bbb.tar.gz bbb #压缩目录 (.tar.gz)
tar -zxvf bbb.tar.gz #解压目录
tar -jcvf bbb.tar.bz2 bbb #压缩目录 (.tar.bz2)
tar -jxvf bbb.tar.gz #解压目录
tar -tvf aaa.tar #查看压缩包内的文件
tar -xvf aaa.tar -C /tmp #压缩到指定目录下
zip :打包命令
zip aaa.zip aaa #压缩文件
zip -r bbb.zip bbb #压缩目录
unzip aaa.zip #解压缩文件
zip aaa.zip aaa1 aaa2 #同时压缩多个文件
unzip -d 位置 压缩包名 #指定解压缩位置
gzip :打包命令
gzip 文件名 #源目录丢失
gzip -c 文件名> 文件名.gz #保留源目录
gzip -r 目录名 #只能压缩目录下的文件,不能打包压缩
gunzip 压缩包 #解压缩
useradd 用户名 :添加用户
userdel -r 用户名 :删除用户及家目录
passwd 用户名 :修改某个用户的密码(root);passwd :修改当前用户密码
echo "123" | passwd -stdin lamp #批量添加用户时,给所有的用户设定一个初始密码。
su - 用户名 :切换用户;su - 切换到root
usermod -G 组名 用户名 修改用户的附加组,其实就是把用户加入其他用户组
chage -d 0 用户名 :强制用户在第一次登陆时必须修改密码.便于批量管理。
id 用户名 :可以査询用户的UID、GID 和附加组的信息
groupadd 组名:添加组
groupdel 祖名:刪除用户组
gpasswd 组名:把用户添加进组或从组中删除
gpasswd -a 用户名 组名 #把用户加入组
gpasswd -d 用户名 组名 #把用户从组中删除
chown (-R) 用户名 文件名:修改文件的所有者
chgrp (-R) 组名 文件名:修改文件的所属组
chown (-R) 用户名:组名 文件名 :同时修改
chmod+x/r/w 文件 / chmod 755 文件 :修改文件权限
yum provides */ 软件名: 查询软件相关可安装包
yum -y install 软件名: 不询问直接安装
yum update 软件名: 升级软件
rpm -ivh rpm包名:安装的时候显示安装进度
ps : 查看进程-静态
ps -l # 查看与自己的bash相关程序进程
ps aux # 查看系统所有进程
ps -le #可以查看系统中所有的进程,而且还能看到进程的父进程的PID和进程优先级;
实例:
ps aux|grep 进程 #查看某进程状态
ps -eo "%C : %p : %z : %a"|sort -k5 -nr #按内存从大到小排列
ps -eo "%C : %p : %z : %a"|sort -nr #按cpu利用率从大到小排列
ps -eo comm,lstart #查看进程启动时间
ps -eo comm,etime #查看进程运行时间
ps -eo pid,tty,user,comm,lstart,etime | grep ......
### pid:进程ID 、tty:终端 、user:用户、comm:进程名 、lstart:开始时间 、etime:运行时间
top : 查看进程-动态(默认5秒更新一次,默认以cpu使用率排序)
top -d 2 #2秒更新一次
top -p 进程号 #单独查看某个进程
top -b -n 2 >/tmp/1.txt #执行两次后,结果保存到文件
M: #按照内存的使用率排序
q: #退出 top 命令;
pstree -Aup : 查看进程之间的相关性 (A以ASCII字符连接 up列出pid)
kill : 待定
htop : 待定
service:centos6
1. service 服务名 start|stop|restart|status #启动/停止/重启服务、查看服务状态
2. service --status-all #查看所有独立服务的启动状态
3. chkconfig 服务名 on/off #设置/关闭开机自启
4. chkconfig --list #查看所有 RPM 包默认安装服务的自启动状态
5. chkconfig --level 2345 httpd on #设置apache服务在进入2、3、4、5级别时自启动
systemctl:centos7
6. systemctl start|stop|restart|status 服务名 #启动/停止/重启服务、查看服务状态
7. systemctl enable/disable 服务名 #设置/关闭开机自启
/etc/init.d/*
/etc/init.d独立服务名 start| stop|status|restart|... #启动/停止/重启服务、查看服务状态
重启:
1. shutdown -r now
2. reboot
3. init 6
关机:
1. shutdown -h now
2. halt
3. poweroff
4. init 0
type 命令名:用于判断另外一个命令是否是内置命令(shell builtin 内置命令)
date:时间
date #显示当前时间
date -s "2019-01-22 19:22:22" #修改系统时间
date -d@1363779026 #类1363779026形式的时间格式转化为人可识别的时间格式
date +%s #从1970年1月1日00:00:00 UTC到目前为止的秒数(时间戳)
tzselect #修正时区,选择5911,执行TZ='Asia/Shanghai'; export TZ
ntpdate 0.arch.pool.ntp.org #修正时间
name=`date '+%Y_%m_%d'` #shell脚本定义变量表示今天
name=`date -d ‘yesterday’ ’+%Y_%m_%d'` #shell脚本定义变量表示昨天
name=`date '+%Y_%m_%d_%H:%M:%S '` #shell脚本定义变量表示今天,精确到秒
netstate :网络状态
netstat -tuln #查看本机开启的端口
netstat -tulnp #p 查看到是哪个程序占用了端口
cat /etc/services #查看服务对应的端口号
netstat -an #查看所有连接
mail :邮件
mail #查看邮件
交互命令 :
1.d2 #删除第二封邮件
2.s 1 /tmp/test #邮件另存为
3.q #保存操作退出
4.e #不保存操作退出
mail 用户名 #发送邮件(填写标题,内容,以.结束)
mail -s “标题” 用户名<文件 #将某个文件发送给某人,并添加新标题
write 用户名: 给某用户发信息,输入内容,ctrl+c结束,有时需要在末尾加上 pts/1或 pts/2 或/pts/3
sync :把缓存区(内存)中的数据强制向硬盘中保存,在关机或重启之前手工执行几次,避免数据丟失。
umask :默认权限
umask #用八制数值显示 0022
umask -S #査看系统的 umask 权限,用字母表示 u=rwx, g=rx, o=rx
umask 002 #临时修改文件默认权限,如果想让修改永久生效,则需要修改对应的环境变量配置文件 /etc/profile
man 命令,命令 --help,info 命令 :三个常用帮助命令
ifconfig :査看 IP 地址、子网掩码和 MAC 地址
ifconfig eth0 192.168.44.3 netmask 255.255.255.0 #临时修改ip地址,具体: http://c.biancheng.net/view/797.html
ping ip地址 :向网络主机发送ICMP请求
ping -c 3 IP地址 #ping3次
setup :配置ip地址,重启网络服务network生效。具体:http://c.biancheng.net/view/795.html
alias lm=‘ls -al’:设置别名
unalias lm :取消别名
alias: 查看别名
查看cpu内核: https://blog.csdn.net/qq_40443457/article/details/92646048
lscpu |grep CPU
cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
cat /proc/cpuinfo | grep "core id" | sort | uniq | wc -l
cat /proc/cpuinfo | grep "processor" | sort | uniq | wc -l
查看磁盘使用情况
df -h
查看文件大小
du -sh *
查看内存大小
free -m | grep "Mem" | awk '{print $2}'
free -g
查看硬件制造商
dmidacond -s system-product-name
获取IP地址
ifconfig eth0|grep“inet addr" | awk'{print $2}'|cut -c 6-
或:ifconfig |'grep -v '127.0.0.1' | grep 'inet addr:' | cut -d: -f2 |
awk '{ print $1}'
显示网络接口信息https://blog.csdn.net/qq_40443457/article/details/92653636
sar -n DEV
查看进程
ps aux | grep 进程名
查看系统版本
lsb_release -a
cat /etc/redhat-release
查看linux系统内核
uname -a
ping ip地址 :一直ping
ping -c 次数 指定次数
查看占用端口8080的进程
netstat -tnlp |grep 8080
在Shell环境下,如何查看远程Linux系统运行了多少时间?
ssh user@ip "uptime"
在11月份内,每天的早上6点到12点中,每隔2小时执行一次/usr/bin/httpd.sh
crontab -e
0 6-12/2 * 11 * /usr/bin/httpd.h
查看upu使用情况。每5秒刷新一次,最右侧有cpu占用率的数据
vmstat 5
按照进程处理器占用率排序
top + shift P
按照进程内存占用率排序
top + shift M
清除僵尸进程
ps -eal | awk '{ if ($2 == "Z") {print $4}}' | kill -9
屏幕上仅列 出 /etc/man_db.conf 的第 11 到 第 20 行, 且有行号存在
cat -n /etc/man_db.conf | head -n 20 | tail -n 10
删除7天前的日志文件(文件位置/home/log)
find /home/log/ -mtime +7 -not -name "*.log" -exec rm-rf {} \;
排序去重
cat 1,.txt | sort | uniq >> 2.txt