CentOS 日常笔记
1.Linux基础命令1
1.cd 命令:切换路径
[oceanshadow@localhost ~]$ cd Videos/
[oceanshadow@localhost Videos]$ cd - #返回执行cd之前的目录
/home/oceanshadow
[oceanshadow@localhost ~]$
2.pwd 命令 :查看当前路径
[oceanshadow@localhost ~]$ pwd #查看当前路径
/home/oceanshadow
3.ls 命令
ls -l #按照列表排列
ls -lt #按照时间降序排列
ls -lrt #按照时间升序排列 可用ll命令代替
ls -i #显示文件属性
ls -a #显示隐藏文件
ls -alrt [path] #显示特定路径下的文件
ll : 相当于ls -lrt
4.cat 命令:查看小文件内容
cat >yy.txt #向yy.txt中输入内容,覆盖原内容
cat >>yy.txt #向yy.txt中输入内容,原内容基础上追加
cat -n yy.txt #查看yy.txt内容,并标注行序号
5.more 命令:查看大文件内容
more [大文件] #按回车查看下一行、按空格翻页查看、按q退出
6.head 命令:查看文件内容前n行
head -n [文件]
7.tail 命令:查看文件内容后n行
tail -20 yy.log #查看后20行
tail -f yy.log #针对实时log
8.touch 命令:创建脚本文件
touch yy.txt #创建文本文件
9.mkdir 命令:创建目录
mkdir /home/oceanshadow/yy #创建yy文件夹
10.rmdir 命令:删除目录
rmdir /home/oceanshadow/yy #删除yy文件夹
11.cp 命令:复制命令
cp -a a.txt /home/oceanshadow/yy/b.txt #赋值a.txt及其属性到指定路径, 并重命名为b.txt
12.mv 命令:移动或更名文件
mv a.txt /home/oceanshadow/yy/b.py #移动当前路径下的a.txt到指定路径, 并重命名为b.py
13.rm 命令:删除文件
rm [文件] #不能删除目录
rm -rf [文件] #强制删除,可删除目录
14.diff 命令:打印两个文件的差异
diff a.txt b.txt
15.ssh 命令:登录远程主机
ssh ip
16.exit 命令:退出远程主机,退出root用户
[oceanshadow@localhost ~]$ su root
Password:
[root@localhost oceanshadow] exit #退出root用户
exit
[oceanshadow@localhost ~]$
17.id 命令:查看当前用户
id #查看当前用户uid
id root #查看root用户uid
id oceanshadow
18.uname 命令:查询主机信息
uname -a
19.echo 命令:标准输出命令
echo “this is a echo” #终端打印出“this is a echo”
20.man 命令:查看命令文档
man ls #查看ls命令文档,输如/-t 则会显=显示出所有-t相关
21. help 命令:查看shell内置命令
22. 重启命令
#重启系统
[oceanshadow@localhost ~]$ reboot
#重启网卡
[oceanshadow@localhost ~]$ systemctl restart network.service
#查看并编辑网卡信息,ifcfg-后面的Tab补全 不同主机不一样
[oceanshadow@localhost ~]$ cat /etc/sysconfig/network-scripts/ifcfg-ens33
[oceanshadow@localhost ~]$ vi /etc/sysconfig/network-scripts/ifcfg-ens33
2.Linux基础命令2
1.clear #清屏
2.who #查看登录用户
3.whoami #查看当前用户
4.uptime #查看服务器运行时间、用户数等信息
5.free #查看系统内存
free -h ; free -m #以M的形式显示
6.wc 命令:统计行数
wc -l log.txt
7.grep 命令:查看文件里符合条件的字符串
grep "192.168.1.4" a.txt #显示出a.txt中所有的"192.168.1.4"
grep "192.168.1.4" a.txt | wc -l #显示出a.txt中所有的"192.168.1.4",并统计个数
grep -n "192.168.1.4" a.txt #显示出含有"192.168.1.4"所在的行数
grep -w "192.168.1.4" a.txt #精确匹配"192.168.1.4",并显示
grep -v "192.168.1.4" a.txt #显示不含"192.168.1.4"的内容
grep -i "192.168.1.4" a.txt #或略大小写显示
8.find 命令:查询文件
find / -name yy.txt #查询yy.txt包括以此命名的目录
find / -type f -name yy.txt #查询yy.txt文件,不显示以此命名的目录
9.uniq 命令:对排序好的内容进行统计,显示出重复文件的个数
uniq -c yy.txt | sort -rn #反向排序统计count
uniq -c yy.txt | sort -n #正向排序统计
grep "192.168.1.4" a.txt | uniq -c
10.sort 命令:对内容进行排序
11.df 命令:查看文件系统的磁盘使用情况
df -h
12.netstat 命令:查看网络端口的使用状况
netstat -tunlp
-t:显示tcp端口
-u:显示udp端口
-n:指明拒绝显示别名
-l:指明listen的
-p:指明显示建立相关连接的程序名
netstat -tunlp | grep nginx
13.hostname 命令:查看主机名
14.ps 命令:显示所有进程的信息,常与grep共用,查找进程
ps -ef | grep python #查看所有python相关进程
ps -ef | grep -v grep | grep nginx #不显示grep命令的进行
ps -ef | more #可显示程序的UID PID PPID等,查看主进程和子进程
ps -aux | grep python #显示出进程对应cpu的使用情况和内存
ps -aux | more
15.kill 命令:杀死进程
kill -l #查看kill序号
kill -9 pid #强制停止pid
16.top 命令:监控linux系统运行状况,按住q退出
17.du 命令:统计文件内存使用状况
du -sm * #不加通配符* ,则统计总和
du -sh *
18. firewall-cmd 命令:查看防火墙运行状态
firewall-cmd --state
19.echo 命令:可以判断上一条命令是否执行正确
echo $? #返回0,代表执行争正确,返回127代表不正确
20.cal 命令:查看日历
cal 2008 #显示2008年日历
3.输入输出重定向
输入重定向:一般表示0<,0可以省略
wc -l < yy.txt #将yy.txt文本中的内容输入到wc命令中统计,显示行数
输出重定向:1>代表覆盖写入,1>>代表追加,1可以省略
ls -lrt > yy.txt #把显示的内容重定向到yy.txt中
echo "12345" > yy.txt
错误重定向:2>代表错误,2不可省略
yy22 2> yy.txt #yy22命令会返回一个错误,将错误输出到yy.txt中
yy22 2>/dev/null #将错误放入无底洞,不占内存
几个符号:
1.& #代表等同于
ls lrt /boot /test 1>/mnt/yy.txt 2>&1 #前提:/test不存在,想要显示/boot和/test中的文件,正确和错误信息都输出到/root/yy.txt
ls lrt /boot /test 1>/mnt/yy.txt 2>/mnt/error.txt #正确信息输出到yy.txt,c错误的输出到error.txt
2.&> #代表不分正确和错误
ls lrt /mnt /test &>/mnt/yy.txt
等同于ls lrt /mnt /test 1>/mnt/yy.txt 2>&1
3.| #管道符
cat /etc/passwd | grep root #查看paswd内容,并以管道形式传递给grep命令,显示带有root的行
4.; #执行多条命令
cat /etc/passwd | grep root;ls -lrt
5.&& #前面命令执行不成功,不执行后面命令
yy22 && echo 123 #可以打印出123
6.|| #前面命令执行成功,后面命令不执行
ls -ll || echo 123 #打印不出123
4.Linux下目录分类与作用
- /:根目录,一般根目录下只存放目录,不要存放、修改文件
- /mnt:测试目录
- /root:root用户的家目录
- /home:普通用户的家目录
- /tmp:临时目录(如文件上传时存放目录)
- /var:存放经常修改的数据,比如程序运行的日志文件
- /boot:存放启动Linux时的内核文件,包括链接文件和日志文件
- /etc:系统默认放置配置文件的地方
- /bin:所有用户都能执行的程序
- /usr:可以防止用户自己的软件
- /dev:存放硬件设备的地方(/dev/cdrom)
- /media:挂载光盘使用
mount /dev/cdrom /media #将虚拟机iso 挂载到/media中
umount /dev/cdrom #卸载光盘
卸载光盘报错:
- fuser -mv /media ;fuser -看、v /media命令:可成功卸载光盘
[root@localhost media] umount /dev/cdrom
umount: /media: target is busy. #报错信息
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
[root@localhost media] fuser -mv /media #查看media的使用者和pid
USER PID ACCESS COMMAND
/media: root kernel mount /media
root 2927 ..c.. bash
[root@localhost media] fuser -kv /media #杀死使用media的进程
USER PID ACCESS COMMAND
/media: root kernel mount /media
root 2927 ..c.. bash
Killed
[root@localhost oceanshadow] umount /dev/cdrom
[root@localhost oceanshadow]#
安装VMtools:
可安装VMtools,安装完毕也可能显示取消VM安装,软件显示问题。
查看下载到光盘中的VMtools:
[root@localhost oceanshadow] mount /dev/cdrom /mnt/ #将ISO挂载到/mnt目录
mount: /dev/sr0 is write-protected, mounting read-only
[root@localhost oceanshadow] cd /mnt/
[root@localhost mnt] ll
total 56865
-r-xr-xr-x. 1 root root 1967 Jun 13 2019 manifest.txt
-r-xr-xr-x. 1 root root 4943 Jun 13 2019 run_upgrader.sh
-r--r--r--. 1 root root 56431201 Jun 13 2019 VMwareTools-10.3.10-13959562.tar.gz
-r-xr-xr-x. 1 root root 872044 Jun 13 2019 vmware-tools-upgrader-32
-r-xr-xr-x. 1 root root 918184 Jun 13 2019 vmware-tools-upgrader-64
[root@localhost mnt] cp VMwareTools-10.3.10-13959562.tar.gz /root/ #将下载好的VMtools复制到本地
[root@localhost oceanshadow] umount /mnt/ #卸载iso,如果有问题看卸载光盘报错部分
安装VMtools:
```py
[root@localhost oceanshadow] cd /root/ #前提是VMtools 在/root目录下
[root@localhost ~] ls
anaconda-ks.cfg original-ks.cfg VMwareTools-10.3.10-13959562.tar.gz
[root@localhost ~] tar -xf VMwareTools-10.3.10-13959562.tar.gz #解压
[root@localhost ~] ls
anaconda-ks.cfg VMwareTools-10.3.10-13959562.tar.gz
original-ks.cfg vmware-tools-distrib
[root@localhost ~] cd vmware-tools-distrib/
[root@localhost vmware-tools-distrib] ls
bin caf doc etc FILES INSTALL installer lib vgauth vmware-install.pl
[root@localhost vmware-tools-distrib] ./vmware-install.pl
[root@localhost vmware-tools-distrib] echo $? #查看上一条命令是否执行成功
0
[root@localhost vmware-tools-distrib] reboot #重启
5.虚拟机与物理机时间同步
- 查看系统时间
date 命令 :查看时间
[root@localhost oceanshadow] date "+%Y-%m-%d %H:%M:%S" #格式化输出时间
2020-05-21 22:04:31
[root@localhost oceanshadow] date -s "2020-05-22 13:00:00" #设置系统时间
Fri May 22 13:00:00 PDT 2020
[root@localhost oceanshadow] date -d yesterday "+%Y-%m-%d %H:%M:%S" #显示此时昨天的时间
2020-05-21 13:01:45
[root@localhost oceanshadow] date "+%w" #显示星期几,此处星期5
5
- 查看并修改时区:
[root@localhost oceanshadow] timedatectl list-timezones #列出所有时区
[root@localhost oceanshadow] timedatectl set-local-rtc 1 # 将硬件时钟调整为与本地时钟一致, 0 为设置为 UTC 时间
[root@localhost oceanshadow] timedatectl set-timezone Asia/Shanghai #设置系统时区为上海
[root@localhost oceanshadow] date #查看显示时间与物理时间一致
Fri May 22 13:45:34 CST 2020
- 校准时间:
[root@localhost oceanshadow yum -y install ntp
#通过阿里云时间服务器校准时间
[root@localhost oceanshadow] ntpdate ntp1.aliyun.com
6. VIM 神之编辑器
vim分为三种模式:
- 命令行模式
- 底行模式
- 插入模式
在命令行模式按键盘i,则变为插入模式,按键盘Esc回到命令行模式,在命令行模式按键盘:,则变为底行模式
- 命令模式操作:
i:在当前光标插入
o:在下一行插入
a:在光标下一个字母插入
gg:光标到第一行行首
G:光标到最后一行行首
x:删除光标所在字母
dd:删除光标所在一整行
u:复原来的操纵
v:按v之后,广光标选择复制的范围,按y即复制
p:黏贴
- 底行模式操作:
:set nu #显示行号
:set nonu #取消行号
:4 #光标跳到第四行
:/yyyy #光标跳到yyyy所在位置
:%s/aa/yy/g #将字符串aa替换成yy
:2,8s/yyyy/qqqq/g #从第2行到第8行,将yyyy替换成qqqq
:q! #强制离开不保存
:wq! #强制写入并保存
:!ls /home #暂时离开,执行ls /home命令
7. Linux 用户管理与组管理
Linux是一个多用户,多任务的操作系统
- Linux用户分类:
- 超级用户:root,拥有制高无上的UID,0
- 普通用户:权限被限制,可执行usr/local/bin , /bin ,/usr/bin ,home目录的命令, UID:500-60000(centos6) UID:1000-60000(centos7)
- 系统用户:一般不会登录系统,用来维持某个服务程序 ,UID:1-499(centos6)UID:1-1000(centos7)
- 关于用户的相关配置文件:
- 账号信息:/etc/passwd
- 密码信息:/etc/shadow
- 添加用户命令:useradd
- -u #指定用户UID
- -d #指定用户主目录
- -g #指定用户所属组
- -r #指定用户是系统用户
- -s #用户登录shell解释器
- -M #不创建主目录
[oceanshadow@localhost ~]$ cat /etc/passwd #查看用户信息
oceanshadow :x :1000 :1000 :Centos 7 :/home/oceanshadow :/bin/bash
用户:密码占位符 :UID :GID(组ID) :描述 :家目录 :登陆后使用的shell解释器
[oceanshadow@localhost ~]$ cat /etc/shadow #查看密码信息,加密后的
创建一个用户ID,指定UID为2222, 指定所属组为root组,指定家目录为/home/yy ,指定登录shell为/bin/bash ,用户名为yy
[root@localhost oceanshadow] useradd -u 2222 -d /home/yy -g root -s /bin/bash yy
[root@localhost oceanshadow] id yy
uid=2222(yy) gid=0(root) groups=0(root)
[root@localhost oceanshadow] cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
oceanshadow:x:1000:1000:Centos 7:/home/oceanshadow:/bin/bash
yy:x:2222:0::/home/yy:/bin/bash
[root@localhost oceanshadow] su yy
[yy@localhost oceanshadow]$ exit
exit
[root@localhost oceanshadow]#
[root@localhost oceanshadow] user -M yy_nohome #创建无家目录的用户,其他参数默认
当家目录系统文件被删,进入su 用户时,出现bash-4.2错误,解决方法:
[root@localhost oceanshadow] ls -lrta /home/yy/
total 16
-rw-r--r--. 1 yy root 231 Apr 11 2018 .bashrc
-rw-r--r--. 1 yy root 193 Apr 11 2018 .bash_profile
-rw-r--r--. 1 yy root 18 Apr 11 2018 .bash_logout
drwxr-xr-x. 4 yy root 39 May 21 10:04 .mozilla
drwxr-xr-x. 4 root root 35 May 23 11:48 ..
drwxr-xr-x. 3 yy root 18 May 23 11:51 .cache
drwxr-xr-x. 3 yy root 18 May 23 11:51 .config
-rw-------. 1 yy root 5 May 23 11:51 .bash_history
drwx------. 5 yy root 128 May 23 11:51 .
[root@localhost oceanshadow] rm -rf /home/yy/.*
rm: refusing to remove ‘.’ or ‘..’ directory: skipping ‘/home/yy/.’
rm: refusing to remove ‘.’ or ‘..’ directory: skipping ‘/home/yy/..’
[root@localhost oceanshadow] ls -lrta /home/yy/
total 0
drwxr-xr-x. 4 root root 35 May 23 11:48 ..
drwx------. 2 yy root 6 May 23 12:06 .
[root@localhost oceanshadow] su yy
bash-4.2$
bash-4.2$ exit
exit
[root@localhost oceanshadow] cd /etc/skel/
[root@localhost skel] ls -lrta
total 24
-rw-r--r--. 1 root root 231 Apr 11 2018 .bashrc
-rw-r--r--. 1 root root 193 Apr 11 2018 .bash_profile
-rw-r--r--. 1 root root 18 Apr 11 2018 .bash_logout
drwxr-xr-x. 3 root root 78 Apr 11 2018 .
drwxr-xr-x. 4 root root 39 May 21 10:04 .mozilla
drwxr-xr-x. 139 root root 8192 May 23 11:48 ..
[root@localhost skel] cp -r .bash* /home/yy
[root@localhost skel] su yy
[yy@localhost skel]$
- 删除用户命令 userdel
- -r 连同家目录一起删除
userdel -r yy
- 添加用户组命令 :groupadd
- 删除用户组命令:groupdel
- 修改用户信息命令:usermod
–u #指定用户UID
-d #指定用户主目录
-g #指定用户所属组
[oceanshadow@localhost ~]$ su #切换到root用户
Password:
[root@localhost oceanshadow] usermod -u 2333 -g 0 -d /home/yy_mod yy #修改yy用户的uid为2333,group为root用户组,主目录为/home/yy_mod
[root@localhost oceanshadow] id yy #查案修改后的id
uid=2333(yy) gid=0(root) groups=0(root)
[root@localhost oceanshadow] su yy
bash-4.2$ #说明主目录有问题,配置文件缺失
bash-4.2$ exit
exit
[root@localhost oceanshadow] cp /etc/skel/.bash* /home/yy_mod/ #复制配置问文件
[root@localhost oceanshadow] su yy
[yy@localhost oceanshadow]$ ls -lrta /home/yy_mod/ #成功查看新的主目录yy_mod
total 12
drwxr-xr-x. 5 root root 49 May 23 12:34 ..
-rw-r--r--. 1 root root 231 May 23 12:34 .bashrc
-rw-r--r--. 1 root root 18 May 23 12:34 .bash_logout
drwxr-xr-x. 2 root root 62 May 23 12:34 .
-rw-r--r--. 1 root root 193 May 23 14:35 .bash_profile
- 设置用户密码命令: passwd
- passwd yy #直接设置
- echo “123456” | passwd --stdin yy #通过管道形式设置
[root@localhost oceanshadow] passwd yy
Changing password for user yy.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@localhost oceanshadow] echo "1009" | passwd --stdin yy
Changing password for user yy.
passwd: all authentication tokens updated successfully.
8. Linux 文件属性与权限操作
- 文件的属性: ls - lrti
[root@localhost oceanshadow] ls -lrti
total 0
2593293 drwxr-xr-x. 2 oceanshadow oceanshadow 6 May 21 10:12 Videos
101397970 drwxr-xr-x. 2 oceanshadow oceanshadow 6 May 21 10:12 Templates
2593292 drwxr-xr-x. 2 oceanshadow oceanshadow 6 May 21 10:12 Public
101397971 drwxr-xr-x. 2 oceanshadow oceanshadow 6 May 21 10:12 Pictures
67351154 drwxr-xr-x. 2 oceanshadow oceanshadow 6 May 21 10:12 Music
67351153 drwxr-xr-x. 2 oceanshadow oceanshadow 6 May 21 10:12 Downloads
33563346 drwxr-xr-x. 2 oceanshadow oceanshadow 6 May 21 10:12 Documents
33563345 drwxr-xr-x. 2 oceanshadow oceanshadow 6 May 21 10:12 Desktop
102368045 -rw-r--r--. 1 root root 0 May 23 14:58 yy
102368093 -rw-r--r--. 1 root root 0 May 23 15:07 yy.py
第一列:是i节点,文件的id。一个文件只能对应一个i节点,一个i节点可以对应多个文件。
第二列:文件类型与权限,r:读权限 数值:4 ; w:写权限 数值:2; x:执行权限 数值:1。这三小列,第1列为所属者权限,第二列为所属组权限,第三列代表其他人权限。
第三列:有多少个文件名链接到这个ij节点。
第四列:所属者
第五列:所属组
- 链接
- 硬链接:相当与和原文件的相互备份。i节点相同,源文件删除,硬链接的文件数据保留,防止重要文件被误删。
- 软连接 :相当于快捷方式,i节点不同。源文件删除,软连接文件闪烁,找不到数据。
[root@localhost oceanshadow] ln -s /home/oceanshadow/yy.py /usr/local/ #创建软连接
[root@localhost oceanshadow] ll /usr/local/
total 0
lrwxrwxrwx. 1 root root 23 May 23 15:22 yy.py -> /home/oceanshadow/yy.py
[root@localhost oceanshadow] ln /home/oceanshadow/yy.py /usr/local/yy #创建硬连接
- 修改文件权限命令: chmod
- -R #递归赋予权限
[root@localhost oceanshadow] chmod u+x,g+w,o+w yy.py #赋予用户执行权限,用户组写权限,其他人写权限
[root@localhost oceanshadow] chmod u-x,g-w,o-w yy.py #取消权限
[root@localhost oceanshadow] chmod 777 yy.py #赋予所有者rwx权限
[root@localhost oceanshadow] chmod -R 777 yy_file #赋予yy_file文件夹下所有文件具有rwx权限
- 修改文件的所有者和所属组命令:chown
- -R #递归赋予权限
chown yy:yy yy.py #` 将yy.py文件赋予yy组的yy用户
chown -R root:yy yy_file #将yy_file文件夹下的所有文件都变为root的所属者和yy的所属组
9. Linux 文件归档与解压缩
-
解压缩命令:gzip;xz
- gzip:压缩较快,但压缩比例较低,不能压缩目录。扩展名:.gz
- 不保留源文件压缩:gzip aa.txt
- 保留源文件压缩:gzip -c aa.txt > bb.txt.gz
- 不保留源文件解压:gunzip bb.txt.gz 或 gzip -d bb.txt.gz
- 保留源文件解压:gunzip -c bb.txt.gz > cc.txt
- xz::压缩速度较慢,但是压缩比例最高,可压缩目录和文件。扩展名:.xz
- 不保留源文件压缩:xz aa.txt
- 保留源文件压缩:xz -c aa.txt > bb.txt.gz
- 不保留源文件解压:unxz bb.txt.gz 或 xz -d bb.txt.gz
- 保留源文件解压:xz -dk bb.txt.gz
- gzip:压缩较快,但压缩比例较低,不能压缩目录。扩展名:.gz
-
归档及解档命令:tar
- -c:#创建新文件
- -f: #指定文件格式
- -v : #显示详细过程
- -z :以gzip方式进行归档压缩
- -J:以xz方式进行归档压缩
- -x:解档
- -C:指定解压路径
[root@localhost oceanshadow] tar -cvzf Vmware-tools-distrib.tar.gz ./vmware-tools-distrib #将当前目录vmware-tools-distrib目录下的文件归档压缩到Vmware-tools-distrib.tar.gz,以gzip方式压缩
[root@localhost oceanshadow] tar -cvJf Vmware-tools-distrib.tar.xz ./vmware-tools-distrib #将当前目录vmware-tools-distrib目录下的文件归档到Vmware-tools-distrib.tar.xz,以xz方式压缩
[root@localhost oceanshadow] tar -xvf Vmware-tools-distrib.tar.gz #将归档文件解压到当前目录
[root@localhost oceanshadow] tar -xvf Vmware-tools-distrib.tar.gz -C /home #将归档文件解压到/home目录
如下图,压缩方式,xz比gzip所占空间小大约一半。