基本命令
创建文件
touch test.txt
创建文件夹
mkdir nginx-1.20.2
删除文件夹
rm -rf 文件夹
查找文件
# 全局查找my.cnf文件
find / -name my.cnf
查看当前路径
pwd
查看子目录
查看当前目录下所有子目录和文件
ls
切换路径
cd /www/wwwroot/task.vpssw.com
查看进程
ps -def | grep "kooteam.jar"
杀进程
kill -s 9 pid //pid是进程id
下载文件
wget http://nginx.org/download/nginx-1.20.2.tar.gz
vim编辑
未修改退出
文件内容没有修改,正常退出
:q
不保存退出
文件内容有修改,不保存退出
:q!
正常保存修改
:wq
强制保存修改
强制执行命令
方法一:
使 用 :wq! 保存退出
方法二:
vim进入文件,输入i编辑好文件,按esc,输入冒号,再输入底下代码
:w !sudo tee %
特别说明:强制保存修改对只读属性(i属性)的文件无效!
Vim 删除操作的正确姿势
1. 普通模式下的删除
a. 删除单个字符
x 向后删除,从光标位置开始
X 向前删除,从光标前一个位置开始
b. 删除单词
dw/W 向后删除一个单词
w和W的区别是边界符的不同,w的边界符包括white space, tabs, <EOL>,标点符号,{},[],()等;W 的边界符只是white space,tab和<EOL>
db/B 向前删除一个单词
b和B的区别同w/W
diw(涉及到文本对象的概念)也可以删除单词,和dw的区别是,diw可以把光标放在单词的任意位置,dw必须放在单词的第一个字母位置
c. 删除行
D 删除光标位置到行尾的字符
dd 删除一行
[count]dd 删除多行
d. 利用文本对象删除
di{ 删除大括号中的内容
da{ 删除大括号中的内容,包括大括号本身
[] () “” ” <> 删除这些封闭符号中的内容和大括号的操作一样
2. 可视模式下的删除
a. 普通可视模式下的删除
v 进入普通可视模式,$选择到行尾,操作符d执行删除
0/^选择到行首,操作符d执行删除
b. 行可视模式下的删除
V 进入行可视模式,j/k/up/down进行上下选择,操作符d执行删除
c. 列可视模式下的删除
CTRL_v 进入列可视模式,h/l进行列选择,j/k/up/down/linenumG进行行选择,操作符d执行删除
用户
添加用户并设置密码
# 用户名称自己自定义取一个
adduser 用户名
# 为普通用户设置新密码
passwd 用户名
普通用户授予root权限
# 编辑sudoers文件
vim /etc/sudoers
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
用户名1 ALL=(ALL) ALL
用户名2 ALL=(ALL) ALL
## Allows members of the 'sys' group to run networking, software,
# 在root后面添加格式:
# 用户名 ALL=(ALL) ALL
# 保存文件并退出。
用户切换
# 普通用户切换到root用户(需要输入普通用户密码)
sudo -i
# root权限切换到普通用户
su - 用户名
sudo : 暂时切换到超级用户模式以执行超级用户权限,提示输入密码时该密码为当前用户的密码,而不是超级账户的密码。不过有时间限制,Ubuntu默认为一次时长15分钟。
su : 切换到某某用户模式,提示输入密码时该密码为切换后账户的密码,用法为“su 账户名称”。如果后面不加账户时系统默认为root账户,密码也为超级账户的密码。没有时间限制。
sudo -i: 为了频繁的执行某些只有超级用户才能执行的权限,而不用每次输入密码,可以使用该命令。提示输入密码时该密码为当前账户的密码。没有时间限制。执行该命令后提示符变为“#”而不是“$”。想退回普通账户时可以执行“exit”或“logout” 。
sudo -i 直接运行sudo命令加-i参数
sudo su 运行sudo命令给su命令提权,运行su命令。
sudo -i 运行结果 PWD=/root
sudo su 运行结果 PWD=/home/用户名(当前用户主目录)
权限
chmod命令
查看文件权限
ls -l 文件
查看文件权限代码
文件/文件系统的详细信息显示
stat /usr/bin/sudo
[root@iZuf6bm7y86rsciyk4lvriZ ~]# stat /usr/bin/sudo
文件:"/usr/bin/sudo"
大小:147336 块:288 IO 块:4096 普通文件
设备:fd01h/64769d Inode:270076 硬链接:1
权限:(4755/-rwsr-xr-x) Uid:( 0/ root) Gid:( 0/ root)
最近访问:2022-01-22 20:14:08.349319244 +0800
最近更改:2020-04-01 12:37:10.000000000 +0800
最近改动:2022-01-22 20:14:05.280197848 +0800
创建时间:-
给文件赋权限
Linux chmod(英文全拼:change mode)命令是控制用户对文件的权限的命令
chmod -R 755 文件
chattr命令
i:不可修改权限 例:chattr u+i filename 则filename文件就不可修改,无论任何人,如果需要修改需要先删除i权限,用chattr -i filename就可以了。查看文件是否设置了i权限用lsattr filename。
去除i权限使用chattr -i filename
# 查看chattr属性
lsattr /etc/sudoers
# 给文件添加上i属性(只读属性)
chattr +i /etc/sudoers
# 给文件去除上i属性(只读属性)
chattr -i /etc/sudoers
数据库
MySQL
登录MySQL
mysql -u root -p
MySQL实例
mysql> use mysql;//mysql是mysql系统创建的数据库实例
修改root密码
mysql> alter user'root'@'%' IDENTIFIED BY '新密码';
刷新权限
mysql> flush privileges;
退出
mysql> quit
Nginx
重启
/usr/local/nginx/sbin/nginx -s reload重新加载
容器
Docker
查看容器
docker ps //查看正在运行的docker容器
操作容器
docker exec -it 7fcfae372bc5 /bin/bash //7fcfae372bc5为具体容器的id 进入某个docker容器内部
退出容器
先按Ctrl+P,再按Ctrl+Q //退出容器,ps能查到,还在后台运行
拷贝文件
074af74c669d 是容器id,也可以换成容器名称,可以使用sudo docker ps -a查看
sudo docker cp 074af74c669d:/etc/bash.bashrc /tmp
或者反过来
sudo docker cp /tmp/index.html 074af74c669d:/etc/
# 其中/tmp是宿主主机的绝对路径。不是相对路径。
常见问题
linux切换新增用户无法连接,报权限不足su: /bin/bash: Permission denied
连接主机...
连接主机成功
Last login: Sun Jan 23 01:17:20 2022 from 113.116.51.113
Welcome to Alibaba Cloud Elastic Compute Service !
/bin/bash: Permission denied
连接断开
# 方法1:给/bin/bash,/bin/和/usr/相关目录赋权755
chmod -R 755 /bin/
chmod -R 755 /bin/bash
# 方法2:关闭selinux
# 方法3:ssh允许root方式登录
# 查看文件目录权限代码
stat /bin/
[root@iZbp19eouywbq18gg9ydncZ ~]# stat /bin/
文件:"/bin/"
大小:28672 块:64 IO 块:4096 目录
设备:fd01h/64769d Inode:655363 硬链接:2
权限:(0700/drwx------) Uid:( 0/ root) Gid:( 0/ root)
最近访问:2022-01-23 13:21:51.528694284 +0800
最近更改:2021-01-14 17:45:55.345385926 +0800
最近改动:2022-01-23 01:25:31.130072242 +0800
创建时间:-
- 远程ssh登陆时报错:/bin/bash: Permission denied
- 创建新用户后无法切换 su: failed to execute /bin/bash: Permission denied
- ssh远程登录服务器出现Permission denied, please try again. 报错
- linux切换新增用户无法连接,报权限不足su: /bin/bash: Permission denied
sudo: /bin/sudo 必须属于用户 ID 0(的用户)并且设置 setuid 位
# 普通用户执行sudo -i命令遇到如下提示
[vpssw@iZuf6bm7y86rsciyk4lvriZ ~]$ sudo -i
sudo: /bin/sudo 必须属于用户 ID 0(的用户)并且设置 setuid 位
# 解决方法:root用户给这个/usr/bin/sudo赋 4755 权限
chmod 4755 /usr/bin/sudo
ssh 命令上传本地文件到Linux服务器
在linux下一般用scp这个命令来通过ssh传输文件。
从服务器上下载文件
scp username@servername:/path/filename /var/www/local_dir(本地目录)
例如:scp [email protected]:/var/www/test.txt /var/www/local_dir
把192.168.0.101上的/var/www/test.txt 的文件下载到/var/www/local_dir(本地目录)
上传本地文件到服务器
scp /path/filename username@servername:/path
例如scp /var/www/test.php [email protected]:/var/www/
把本机/var/www/目录下的test.php文件上传到192.168.0.101这台服务器上的/var/www/目录中
从服务器下载整个目录
scp -r username@servername:/var/www/remote_dir/(远程目录) /var/www/local_dir(本地目录)
例如:scp -r [email protected]:/var/www/test /var/www/
上传目录到服务器
scp -r local_dir username@servername:remote_dir
例如:scp -r test [email protected]:/var/www/
把当前目录下的test目录上传到服务器的/var/www/ 目录
数据文件迁移
tar czf - public_html | ssh root@"IP" tar xzf - -C /www/web/freehao123_info/public_html
linux从一台服务器传输文件到另一台服务器上
首先两台服务器必须是可以ping通的
例: ping 10.22.137.10 ping通之后:
1、复制文件 格式: scp 目录/文件名.文件格式 目标服务器用户名@ip地址:目标服务器目录 例:
scp /backup/test/md3/export.sh [email protected]:/ssx/dev/md1
2、复制目录(包括目录下的文件)
scp -r /backup/test/md3 [email protected]:/ssx/dev/md1