1.linux机器相互登录
代码语言:javascript复制先在服务器上生成公钥和私钥,使用命令:ssh-keygen
[root@linux-01 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:3FYV0kj/2uk/L28tqNL/XGuYcwBCrrNDH2SR4SkaDDk root@linux-01
The key's randomart image is:
---[RSA 2048]----
| .. .o.ooo. |
| Eo . . . . |
| .o .oo. . . |
| o..* o . |
| . S . .|
| o . o.|
| . .. .=. |
| o... .= = |
| ...o..*BB|
----[SHA256]-----
私钥是:/root/.ssh/id_rsa 公钥是:/root/.ssh/id_rsa.pub
两台服务器直接免密登录是需要把公钥放置到另外一个服务器上,文件位置为:~/.ssh/authorized_keys
有一个命令可以实现自动copy公钥到对方机器上,命令为:ssh-copy-id
[root@linux-01 ~]# ssh-copy-id root@192.168.145.130
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.145.130 (192.168.145.130)' can't be established.
ECDSA key fingerprint is SHA256:5GxiNdyl0UuM/kthNV2MtFRMyoZ5myCf7VbrK5Z04Sw.
ECDSA key fingerprint is MD5:f0:8f:2e:df:87:18:60:1f:aa:9d:ee:ba:a8:56:75:d2.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.145.130's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@192.168.145.130'"
and check to make sure that only the key(s) you wanted were added.
2.centos各个目录的作用解析
代码语言:javascript复制/root/ #用户家目录
/bin/ /usr/bin/ /sbin/ /usr/sbin/ #bin目录下的命令为普通用户的命令,sbin目录下的命令为超级用户的命令
/boot/ #系统启动相关文件
/dev/ #设备文件
/etc/ #系统配置文件
/home/ #用户家目录文件
/lib/ /lib64/ #库文件
/media/ #媒介文件夹 如:U盘
/mnt/ #默认空 挂载U盘 光驱
/opt/ #默认空
/proc/ #进程
/run/ #进程产生的临时文件,重启消失
/srv/ #空 存服务产生的文件
/sys/ #系统内核相关的文件
/tmp/ #临时目录
/usr/ #用户的文件
/var/ #日志
3.基础命令
代码语言:javascript复制ls 命令常用选项:
-a 显示所有文件包含隐藏文件
-l 显示文件的详细信息
-h 显示文件的大小,大小带单位
-t 按时间顺序显示文件
-d 只显示文件夹
alias命令
这个命令的作用是别名,我们可以在敲一段很长的命令的时候可以座别名,这样可以方便我们去使用命令
tree命令:树形显示目录和文件
[root@linux-01 ~]# tree /root/
/root/
├── 11.txt
├── 22.txt
└── anaconda-ks.cfg
0 directories, 3 files
man命令:可以查看命令的帮助文档
cd命令:进入某一个目录
pwd命令;显示当前所在目录
history命令:显示历史使用命令
wc -l 命令:统计文件有多少行
mkdir命令:创建文件夹的命令,如果需要逐级创建需要加选项-p
rmdir命令:和mkdir命令是相反的操作,就是删除文件夹的命令,如果说文件内还有文件,需要加选项-p
rm命令:删除命令
-f 强制删除文件
-r 递归删除目录
-v 显示删除过程
cp命令:复制文件的命令,同时也可以改名,复制到目标目录的时候直接修改文件名。
-r 复制多级目录的时候需要添加
mv命令:移动文件的命令,同时也可以改名使用
cat命令:查看文件的命令
-n 查看文件的时候添加行号
tac命令:倒叙查看文件的命令
more命令:文件在一个屏幕无法显示全的时候使用,按空格显示下一屏内容,ctrl b 上一屏。
less命令:单屏显示,空格往下看,Ctrl b往上看,支持上下键上下行,Ctrl b往上看,看完不会自己退出,需要按q退出
head命令:显示文件前几行的内容,配合-n 加数字来使用。
tail命令:可以动态查看文件内容,配合-f来使用,多用于查看日志文件。
chmod命令:给文件以及文件夹添加权限的命令,需要递归的时候需要加-R选项
chown命令:更改文件以及文件夹所属主,所著组的命令。格式:chown -R username:group filename
umask:用来决定创建目录及文件默认的权限,root用户默认是;0022权限
chattr命令:给文件添加隐藏权限的命令
给文件添加一个i权限,可以实现:不能编辑文件,不能追加,不能改名,不能删除,不能报错,不能touch文件。(touch会更改文件的创建时间)命令是:chattr i 11.txt 如果不想要这个i权限,可以使用命令chattr -i 11.txt 删除i权限。
给文件添加一个a权限,可以实现:不能删除,不能更改,不能重命名,可以追加文件内容,可以touch。命令是:chattr a 11.txt 如果不想要这个a权限,可以使用命令chattr -a 11.txt 删除i权限。
给目录添加一个i权限效果是:能在目录下写已经存在的文件,不能删除,不能改名,不能再目录下创建文件目录。
给目录添加一个a权限效果是:可以追加,不能更改,可以在目录下touch,可以更改文件下的内容
lsattr命令:查看文件隐藏权限的命令
ln 命令:硬链接,
ln -s 命令:软连接,相当于windows的快捷方式,使用方法:ln -s 源文件 目标地址文件
which 命令:查找命令所在的位置
whereis 命令:同样是查找命令所在的位置,在事先准备的文件库 到库里面去找 locate 不常用 locate安装:yum install -y mlocate locate用法:locate 文件名/命令 先要去遍历文件 生成数据库 生成数据库命令:updatedb
find命令:
格式 find 目录 参数
find / -name "文件名" 查找一个文件
find /home/ -type d -name "xxx" ;在home目录下查找文件为xxx的目录,type可以跟以下类型的文件 d:目录 f: 文件 l:软连接 s :sock文件 c:字符串文件 b:块设备
find / -type f -mtime -1(1天以内) 1(大于1天)
find /etc/ -type f -o -mtime -1 -o -name "*.conf" -o表示或者
find /root/ -type f -mmin -60 -exec ls -l {} ; -exec 参数后面跟的是command命令,它的终止是以;为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。
3.文件属性
代码语言:javascript复制我们知道linux上所有的信息都为文件,文件类型有哪些呢,其实在ls -l的时候,第一段的信息就会告诉我们
- 普通文件
d 目录文件
b 快文件,比如硬盘,CD/DVD
l 软连接文件,相当于windows的快捷方式
s socket文件,也就是通信文件
c 字符串设备,比如键盘
4.绝对路径和相对路径
代码语言:javascript复制这个很容易理解,绝对路径就是说好比一个 nginx.tar.gz文件 在/usr/local/src/下
用绝对路径表示为: /usr/local/src/nginx.tar.gz
用相对路径表示为:假设在src目录下,表示为: nginx.tar.gz
5.PATH环境变量
代码语言:javascript复制linux中有一个系统的环境变量,使用 echo $PATH 即可显示出系统变量的位置
[root@linux-01 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
我们知道sbin和bin目录下储存的都是用户的命令,我们在使用这些命令的时候都是可以直接使用的,若你的命令不是在这个PATH环境中,那么我们需要把命令添加到PATH环境变量中去,如何添加到环境变量呢?
这就涉及到另外一个文件:/etc/profile,我们需要在这个文件最后添加一行:export PATH=$PATH:/usr/local/nginx/bin/
假设nginx的bin目录下有命令需要用到,可以这样来设置。
6.特殊权限
代码语言:javascript复制set_uid:是保证普通用户临时拥有所有的者身份(临时拥有)必须是二进组,可执行文件比如 /usr/bin/passwd,chmod u s /usr/bin/ls 注:u为所有者权限 大S是因为缺少X权限,目录能加S权限但是无意义
set_gid:是保证普通用户临时拥有所属组的身份(临时拥有)必须是二进组,可执行文件比如 /usr/bin/ls,可以作用在目录上,当给目录设置了set_gid后再目录下创建文件及目录会跟着父级目录的所属组保持一致
stick_bit:防止别人删除自己的文件(root)除外,/tmp/目录下可以改别人的文件不能删除,/tmp/目录是带stick_bit权限的,删除文件目录是看父级目录的权限
7.时间atime、ctime、mtime
代码语言:javascript复制Access time = atime 访问时间:文件中的数据最后被访问的时间
Modify time =mtime 修改时间:文件内容被修改的最后时间
Change time = ctime 变化时间:文件的元数据发生变化。比如权限,所有者等
8.命令行模式快捷键
代码语言:javascript复制Ctrl l 清屏
Ctrl d 退出终端
Ctrl c 终端任务
Ctrl u 删除光标前面的内容
Ctrl e 光标移到末尾
Ctrl a 光标移动到开头