Linux常用命令集合汇总

基本命令

创建文件

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
创建时间:-

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

Related Post

发表回复