linux运维常见命令行
文章目录
- 用户管理
- 创建用户
- 修改用户信息
- 列出用户信息
- 添加用户到组
- 删除用户
- 创建和管理组
- 查看用户和组的信息
- 其他相关命令
- 文件管理
- 文件和目录的基本操作
- 文件权限管理
- 文件压缩和归档
- 磁盘管理
- 查看磁盘使用情况
- 查看文件和目录的磁盘使用情况
- 磁盘分区管理
- 挂载和卸载文件系统
- 磁盘配额管理
- LVM(Logical Volume Manager)管理
- 网络管理
- 查看网络接口状态
- 配置网络接口
- 查看和管理路由表
- 管理 DNS 和主机名
- 网络诊断工具
- 网络流量监控
- SSH 管理
- 防火墙管理
- 网络配置文件管理
- 进程管理
- 1. ps (Process Status)
- 2. top
- 3. htop
- 4. kill 和 killall
- 5. pkill
- 6. pgrep
- 7. nice 和 renice
- 8. nohup
- 9. bg, fg
- 10. strace
- 其他
- ssh命令行
- sftp命令
- telnet命令行
- 结语
用户管理
在 Linux 系统中,通过命令行进行用户管理是一项重要的系统管理任务。以下是一些常用的用户管理命令及其使用方法:
创建用户
-
创建新用户:
sudo useradd username
-
创建带有家目录的新用户:
sudo useradd -m username
-
创建带有指定 UID 的新用户:
sudo useradd -u uid username
-
创建带有指定主组的新用户:
sudo groupadd groupname sudo useradd -g groupname username
-
创建带有多个附加组的新用户:
sudo groupadd group1 sudo groupadd group2 sudo useradd -G group1,group2 username
修改用户信息
-
修改用户的密码:
sudo passwd username
-
修改用户的主目录:
sudo usermod -d /path/to/new/home/directory username
-
修改用户的登录 Shell:
sudo usermod -s /bin/bash username
-
禁用用户账号(设置密码过期):
sudo usermod -L username
-
启用用户账号(取消密码过期):
sudo usermod -U username
列出用户信息
-
查看所有用户列表:
cat /etc/passwd
-
查看特定用户的详细信息:
grep username /etc/passwd
添加用户到组
-
将用户添加到现有组:
sudo usermod -aG groupname username
-
将用户添加到多个组:
sudo usermod -aG group1,group2 username
删除用户
-
删除用户(保留家目录):
sudo userdel username
-
删除用户及家目录:
sudo userdel -r username
创建和管理组
-
创建新组:
sudo groupadd groupname
-
删除组:
sudo groupdel groupname
-
查看所有组列表:
cat /etc/group
-
查看特定组的成员:
grep groupname /etc/group
查看用户和组的信息
-
查看用户信息(如UID、GID等):
id username
-
查看当前登录用户的详细信息:
whoami
-
查看用户的主组和附加组:
groups username
其他相关命令
-
查看用户的计划任务:
crontab -l -u username
-
编辑用户的计划任务:
crontab -e -u username
-
切换用户:
su - username
通过这些命令,你可以有效地管理 Linux 系统中的用户和组。请确保在执行这些命令时具有足够的权限(通常是通过 sudo
),并且在删除用户或组之前仔细确认,以免造成不必要的损失。
文件管理
在 Linux 系统中,通过命令行进行文件管理是非常常见的操作。以下是一些常用的文件管理命令及其使用方法:
文件和目录的基本操作
-
查看当前目录的内容:
ls
可以加上
-l
参数显示详细信息:ls -l
-
查看指定目录的内容:
ls /path/to/directory
-
列出隐藏文件:
ls -a
-
改变当前工作目录:
cd /path/to/directory
-
查看当前所在的工作目录:
pwd
-
创建新目录:
mkdir directory_name
创建多个目录:
mkdir dir1 dir2
-
创建多级目录:
mkdir -p path/to/directory
-
删除空目录:
rmdir directory_name
-
删除文件或目录(包括非空目录):
rm file_name rm -r directory_name
强制删除(不提示确认):
rm -f file_name rm -rf directory_name
-
复制文件或目录:
cp source destination
复制多个文件到一个目录:
cp file1 file2 directory/
递归复制目录:
cp -r source_directory destination_directory
-
移动或重命名文件或目录:
mv source destination
重命名文件:
mv oldname newname
-
显示或编辑文件内容:
cat file_name
分页显示文件内容:
less file_name more file_name
编辑文件内容:
nano file_name vi file_name
-
查找文件:
find /path/to/start -name pattern
查找当前目录下的所有
.txt
文件:find . -name "*.txt"
文件权限管理
-
查看文件权限:
ls -l
查看特定文件的权限:
ls -l filename
-
更改文件或目录的权限:
chmod mode file_or_directory
例如,给文件所有者读写执行权限:
chmod 700 file_name
给所有人读权限:
chmod a+r file_name
-
更改文件或目录的所有者:
chown user file_or_directory
同时更改用户和组:
chown user:group file_or_directory
-
更改文件或目录的组:
chgrp group file_or_directory
文件压缩和归档
-
创建 gzip 压缩文件:
gzip file_name
解压 gzip 文件:
gunzip file_name.gz
-
创建 bzip2 压缩文件:
bzip2 file_name
解压 bzip2 文件:
bunzip2 file_name.bz2
-
创建 tar 归档文件:
tar -cvf archive.tar directory/
解压 tar 文件:
tar -xvf archive.tar
-
创建并压缩 tar 文件(gzip 或 bzip2):
tar -czvf archive.tar.gz directory/ tar -cjvf archive.tar.bz2 directory/
解压压缩的 tar 文件:
tar -xzvf archive.tar.gz tar -xjvf archive.tar.bz2
这些命令涵盖了日常文件管理中最常用的操作。熟练掌握这些命令可以帮助你高效地管理 Linux 系统中的文件和目录。
磁盘管理
在 Linux 系统中,通过命令行进行磁盘管理是非常重要的技能之一。以下是一些常用的磁盘管理命令及其使用方法:
查看磁盘使用情况
-
查看总的磁盘使用情况:
df -h
-h
参数表示以人类可读的形式(如 GB、MB)显示磁盘空间。 -
查看特定文件系统的磁盘使用情况:
df -h /mount/point
-
查看文件系统的详细信息(包括inode使用情况):
df -i
查看文件和目录的磁盘使用情况
-
查看当前目录下各文件和子目录的磁盘使用情况:
du -h
-h
参数表示以人类可读的形式显示磁盘空间。 -
查看特定文件或目录的磁盘使用情况:
du -sh /path/to/directory
-s
参数表示汇总大小,-h
表示以人类可读形式显示。 -
查找占用空间较大的文件或目录:
du -ah | sort -nhr
磁盘分区管理
-
查看当前系统中的磁盘设备:
lsblk
-
创建新的磁盘分区:
parted /dev/sdb mklabel gpt parted /dev/sdb mkpart primary ext4 0% 100%
使用
parted
工具创建 GPT 分区表,并创建一个主分区。 -
格式化新的磁盘分区:
mkfs.ext4 /dev/sdb1
-
挂载新的磁盘分区:
mkdir /mnt/newdisk mount /dev/sdb1 /mnt/newdisk
-
卸载磁盘分区:
umount /mnt/newdisk
挂载和卸载文件系统
-
挂载文件系统:
mount /dev/sdb1 /mount/point
-
永久挂载文件系统(编辑
/etc/fstab
文件):echo '/dev/sdb1 /mnt/newdisk ext4 defaults 0 0' >> /etc/fstab
-
卸载文件系统:
umount /mount/point
磁盘配额管理
-
启用磁盘配额:
tune2fs -O ^has_journal /dev/sda1 mkfs.ext4 -q -o quota /dev/sda1 mount -o remount,quota /mnt/sda1
-
设置用户或组的磁盘配额:
edquota -u username edquota -g groupname
-
查看磁盘配额状态:
repquota -avug /mount/point
LVM(Logical Volume Manager)管理
-
创建物理卷(Physical Volume,PV):
pvcreate /dev/sdb1
-
创建卷组(Volume Group,VG):
vgcreate vgname /dev/sdb1
-
创建逻辑卷(Logical Volume,LV):
lvcreate -L 20G -n lvname vgname
-
格式化逻辑卷:
mkfs.ext4 /dev/vgname/lvname
-
挂载逻辑卷:
mkdir /mnt/lv mount /dev/vgname/lvname /mnt/lv
-
扩展逻辑卷:
lvextend -L +10G /dev/vgname/lvname resize2fs /dev/vgname/lvname
-
减少逻辑卷:
umount /mnt/lv resize2fs /dev/vgname/lvname 15G lvreduce -L 15G /dev/vgname/lvname mount /mnt/lv
通过这些命令,你可以有效地管理和监控 Linux 系统中的磁盘空间使用情况。确保在执行涉及磁盘分区和格式化的操作时格外小心,以防止数据丢失。
网络管理
在 Linux 系统中,通过命令行进行网络管理是一项基本而重要的任务。以下是一些常用的网络管理命令及其使用方法:
查看网络接口状态
-
查看所有网络接口的状态:
ip link show
或者使用:
ifconfig
-
查看特定网络接口的状态:
ip link show eth0
或者:
ifconfig eth0
配置网络接口
-
设置网络接口的 IP 地址:
ip addr add 192.168.1.100/24 dev eth0
或者:
ifconfig eth0 192.168.1.100 netmask 255.255.255.0
-
删除网络接口的 IP 地址:
ip addr del 192.168.1.100/24 dev eth0
或者:
ifconfig eth0 down ifconfig eth0 up
-
激活网络接口:
ip link set eth0 up
或者:
ifconfig eth0 up
-
停用网络接口:
ip link set eth0 down
或者:
ifconfig eth0 down
查看和管理路由表
-
查看当前的路由表:
ip route show
-
添加静态路由:
ip route add 192.168.2.0/24 via 192.168.1.1 dev eth0
-
删除静态路由:
ip route del 192.168.2.0/24 via 192.168.1.1 dev eth0
管理 DNS 和主机名
-
查看当前的 DNS 服务器配置:
cat /etc/resolv.conf
-
设置 DNS 服务器:
echo 'nameserver 8.8.8.8' > /etc/resolv.conf
-
设置主机名:
hostnamectl set-hostname newhostname
或者直接编辑配置文件:
sudo nano /etc/hostname
-
查看当前的主机名:
hostname
网络诊断工具
-
检查网络连通性:
ping www.example.com
-
跟踪路由路径:
traceroute www.example.com
-
查看 TCP/IP 网络统计数据:
netstat -tulnp
-
查看 ARP 缓存表:
arp -a
-
查看网络接口的统计信息:
ip link show eth0
网络流量监控
-
实时监控网络流量:
iftop
-
查看网络接口的流量统计信息:
sar -n DEV 1
SSH 管理
-
查看 SSH 服务状态:
systemctl status ssh
-
启动 SSH 服务:
systemctl start ssh
-
停止 SSH 服务:
systemctl stop ssh
-
重新启动 SSH 服务:
systemctl restart ssh
-
查看 SSH 服务的日志:
journalctl -u ssh
防火墙管理
-
查看防火墙状态:
systemctl status firewalld
-
启动防火墙服务:
systemctl start firewalld
-
停止防火墙服务:
systemctl stop firewalld
-
添加端口到防火墙规则:
firewall-cmd --permanent --add-port=80/tcp firewall-cmd --reload
-
删除端口的防火墙规则:
firewall-cmd --permanent --remove-port=80/tcp firewall-cmd --reload
网络配置文件管理
- 编辑网络接口配置文件:
或者在使用sudo nano /etc/network/interfaces
NetworkManager
的系统中:sudo nano /etc/systemd/network/eth0.network
通过这些命令,你可以有效地管理和监控 Linux 系统中的网络配置。确保在网络配置过程中仔细操作,避免因错误配置导致网络不可用的情况。
进程管理
Linux 提供了一系列强大的命令行工具来帮助用户管理和监控系统中的进程。以下是一些常用的 Linux 进程管理命令:
1. ps (Process Status)
- 查看当前系统的进程信息。
- 示例命令:
ps aux
显示所有用户的详细进程信息。
2. top
- 动态显示系统的总体运行状态,包括 CPU 和内存使用情况以及各个进程的状态。
- 可以通过
top
命令进入交互模式来查看和管理进程。
3. htop
- 类似于
top
,但是提供了更加友好的交互界面,支持颜色显示和鼠标操作。 - 需要安装 htop 包才能使用。
- 示例命令:
htop
4. kill 和 killall
kill
用来发送信号给指定的进程。killall
用来根据程序名杀死所有同名进程。- 示例命令:
kill PID
或者killall program_name
5. pkill
- 类似于
killall
,但是提供了更灵活的选择条件。 - 示例命令:
pkill -f pattern
可以根据正则表达式杀死匹配的进程。
6. pgrep
- 用来查找符合特定模式的进程。
- 示例命令:
pgrep pattern
查找与模式匹配的所有进程的 PID。
7. nice 和 renice
nice
可以设置新启动进程的优先级。renice
可以改变已存在的进程的优先级。- 示例命令:
nice -n 5 command
启动一个优先级较低的进程;renice -n 5 -p PID
改变指定进程的优先级。
8. nohup
- 使进程在后台继续运行,即使用户退出也不受影响。
- 示例命令:
nohup command &
将命令放入后台并忽略挂断信号。
9. bg, fg
bg
将在后台暂停的任务恢复运行。fg
将后台的任务移到前台运行。- 示例命令:
jobs
列出后台的任务,然后可以用bg %job_number
或fg %job_number
控制它们。
10. strace
- 用来追踪系统调用和信号。
- 示例命令:`strace -p PID` 跟踪指定进程的所有系统调用。
这些命令可以帮助你有效地管理和监控 Linux 系统上的进程。每个命令都有详细的帮助文档,可以通过 man 命令名
来获取更多详细的信息。
其他
ssh命令行
# 连接到远程服务器
ssh 用户名@远程服务器地址
# 指定端口连接
ssh -p 端口号 用户名@远程服务器地址
# 执行远程命令
ssh 用户名@远程服务器地址 命令
# 使用密钥文件连接
ssh -i 密钥文件路径 用户名@远程服务器地址
sftp命令
# 连接到远程服务器
sftp 用户名@远程服务器地址
- 输入密码后,您将进入SFTP交互模式。
# 列出远程目录内容
ls
dir
# 切换远程目录
cd 远程目录路径
# 列出本地目录内容
lpwd
# 切换本地目录
lcd 本地目录路径
# 上传文件
put 本地文件路径
# 下载文件
get 远程文件路径
# 退出sftp
bye
- 批量上传文件
#!/bin/bash
# 假设你的 SFTP 服务器地址为 example.com
# 用户名为 user,密码为 password
# 文件列表在 /path/to/files.txt 中,每行一个文件路径
cat << EOF > sftp_commands
put /path/to/local/file1.txt
put /path/to/local/file2.txt
put /path/to/local/file3.txt
exit
EOF
echo "开始上传文件..."
sftp -b sftp_commands -oUserKnownHostsFile=/dev/null -oStrictHostKeyChecking=no user@example.com << EOF
EOF
rm sftp_commands
telnet命令行
# 输入以下命令以连接到远程服务器
telnet 远程服务器地址 端口号
结语
以上就是在linux服务器当中经常用到的命令行工具, 可能并不全, 但是熟练掌握后, 可以处理80%的应用部署,问题检查问题