Linux常用命令

Linux常用基本命令

基本操作命令

命令补全

值得特别提醒的是假如我们输入了一个命令例如cd /etc/但是忘记下面要打开什么文件,这时候我们加入两个tab键cd /etc/[tab][tab]就能够显示当前目录下所有目录,然后输入我们想要进入的目录。如果你能够确定当前目录下只有一个文件或目录cd /etc/[tab],加一个tab键会直接替换为下一级目录,因为shell能够确定你的下一级目录或者文件是什么(因为只有这一个目录或文件)。

通配符

ls -l /home/lem/s* # 查看带有s的目录下所有文件
cp /home/lem/share/* /usr/ # 复制share目录下所有文件到/usr目录下

man查看操作手册命令

man -k . # 查看命令关键词

查看支持的shell以及每个用户登录的基础shell类型

# 查看支持的shell类型
cat /etc/shells
# 查看用户登录的shell类型
cat /etc/passwd

wall广播命令

wall "nihao" # 向当前服务器广播所有登录的用户广播信息

gcc编程命令

ar-archieve创建链接库命令

ar适用于处理静态库文件.a

ar -rcs libserver server.o # 链接库链接的是.o文件,不是可执行文件,建立静态库文件(无法动态修改),可以将其放在/usr/local/lib下,
# 放到标准目录下就可以通过gcc -lserver直接引用,这样想来-lpthread就是这样一个文件
ar -t <filename> # 查看文件中有什么
-r # 有同名文件存在即更新
-c # 不需要反馈信息
-s # 要在.a文件开头建立索引

gcc命令

gcc -o server server.c -I. -L/my_lib -lserver # 告诉编译器你放在哪里了,指明头文件在当前目录下使用.
gcc -c reactor.c -o reactor.o # 编译
gcc -c webserver.c -o webserver.o  # 编译
gcc reactor.o webserver.o -o oserver # 链接

环境变量命令

export设置环境变量

export Local_Path=/home/lem/share

set观察环境变量与所有变量

set

unset取消设置环境变量

unset 可以用于取消shell写入的变量,shell脚本的变量的生命周期在脚本执行完毕后结束。

unset Local_Path

env命令用于查看设置的环境变量

env # 显示所有环境变量
env -u lem # 显示单一用户的环境变量

网络资源请求命令

wget资源获取命令

支持从网络上下载数据,支持http/https协议,也可以通过代理服务器下载。

wget [URL]
wget -o file.zip https://www.samples.com 
wget --user=[username] --password=[password] [URL] # 使用账号密码
wget --proxy [proxy_server:port] [URL] # 使用代理
wget --no-check-certificate [URL] # 不检查SSL证书

curl传输数据命令

支持多种传输方式:HTTP,HTTPS,FTPS,TELNET,代理等,用于下载和请求数据,也可用于测试或与服务器交互。

curl [option] [URL]
curl https://www.samples.com -o file.zip # 下载文件
curl -X GET [URL] # 发送GET请求
curl -k [URL] # -k允许连接https网站时不进行ssl验证
curl -\# [URL] # 显示进度条
-I # 只显示http响应头,不显示响应体
-X # 指定restful接口
-H # 指定请求头,例如-H "Accept: application/vnd.docker.distribution.manifest.v2+json",vnd为MIME类型的特定自定义格式
curl --unix-socket /var/run/docker.sock -X GET "http://localhost/v2/_catalog" # 通过unix-socket连接的好处

sshpass命令

sshpass 传递命令

sshpass -p 'password' ssh user@ip '命令'
sshpass -p 'password' ssh ip '命令' # 不指定用户的话,默认为root用户
sshpass -p 'password' ssh -o StrictHostKeyChecking=no ip # 不检查密钥

ssh命令

ssh ip # 连接ip

文件操作命令

tree命令

tree # 查看当前文件夹下所有文件和文件夹的目录树

ln命令link(添加软链接)

ln [option] TARGET LINK_NAME
-f # 移除已经存在的目标文件
-s # 生成符号链接代替硬链接

chmod修改文件权限命令

chmod 777 <filename> # 777,分别是u,g,o的权限位
-r 4
-w 2
-x 1
# 复合模式
u # 所有者(user)
g # 所属组(group)
o # 其他用户(others)
a #所有用户(all,即 uga)
# 操作符
+ # 添加权限
- # 删除权限
= # 设置权限

cp复制命令

cp -f example.txt example_copy.txt # 

vim文件编辑命令

vim /etc/apt/source.list # 用vim软件打开镜像源
-i # insert mode , press esc to exit
:wq # command mode , save and quit
q # command mode, quit
/text # 文本匹配命令
G # 直接跳转到末尾
gg # 直接跳转到开头
945gg # 直接跳转945行
v # 进入v模式

mkdir创建目录命令

mkdir share # 创建dir
-p # 如果父目录不存在,就创建父目录
mkdir -m 750 share # 创建目录并设定权限,等于mkdir+chmod

rmdir移除目录命令

rmdir share # 移除dir

ls列出命令

image-20240901211430076

ls -l # 列出文件和目录的详细信息
ls -R # 列出所有文件
ls -a # 列出隐藏文件

mv移动文件命令

mv example.txt /lem/ # 移动目录下
mv oldname newname # 重命名

rm移除文件命令

rm example.txt # 移除文件
rm -rf dir # 移除dir目录下所有目录和文件

scp安全复制协议传输文件命令

其实还是SSH协议

scp -r local_dir root@hostip:path
-v # 显示详细信息
-P # 指定ssh的端口,默认是22
-i # 指定私钥

文本操作命令

tee命令用于从标准输入读然后写到标准输出和文件中

# T型指令
echo "Hello, World!" | tee filename.txt # 显示输出并且将输出写入到文件中
echo "Hello, World!" | tee -a filename.txt > /dev/null # 不显示输出将输出写入到文件中
echo "Hello, world!" > name.txt # 直接较标准输出定向到name.txt文件中,不打印输出
ls -l | tee -a filename.txt # 列出信息追加写入到文件中

cat阅读文件命令

复制文件到标准输出

cat /etc/apt/source.list # 查看文件内容只读,由第一行开始显示
-A # 显示所有字符,包括末尾的文本结尾标志$
-n # 显示所有的行号
-b # 只给非空行进行编号
-E # 显示每一行结尾的$
-s # 压缩空行
-T # 显示Tab以^I

阅读文件命令

tail -n 10 b.txt # 只查看末尾10行
head -n 10 b.txt # 只查看头10行
more  b.txt  # 一页一页看内容,通过enter浏览
cat /proc/version

cut截断字符串命令

who | cut -d ' ' -f 1 # 只显示第一个被空格分隔的字符,无法处理连续空格
-c 1- # 指定显示第1个字符后的所有字符
-d # 指定分隔符,默认分隔符为tab
-f 1 # 提取第1列,以分隔符指定的,
-f 1,3 # 提取第1列和3列
-f 1-3 # 提取1-3列

sort排序命令

sort -r # -r 反向排序大小

wc单词计数命令

wc -l # 列出行
-w # 列出英文单词字数
-m # 列出字符数

tr转义和删除字符命令

tr '[a-z]' '[A-Z]' # 替换所有小写字母为大写字母
-d ' ' # 删除空格
-s # 取代重复的字符

grep抓取文本命令

值得注意的是,这个会遍历所有文本进行匹配,所以效率较低,而sed是逐行处理的

-r # recursive递归搜索
-n # 显示行号line-number
-v # 方向搜索invert-match
--color=never # 关闭颜色输出
grep -rn "new" /data # 捕捉/data目录下所有new的关键字

awk命令

awk # 字符匹配
awk 'pattern { action }' input_file # 基本语法
awk '{print $1 " " $2}' a.txt # 打印文本的第一列和第二列
awk '$1 > 10 {print $1}' a.txt # 打印第一行字段大于10的所有字段
ps -ef | grep 1 | awk '{print $1}' # 打印获取到的输出
docker images | grep no| awk -F ',' '{print $2}' # 以逗号为分隔符打印字符

sed(stream editor)流编辑命令

sed [options] 'command' input_file # 基本语法
-i # 应用改变
-e # 执行多条命令
p # 打印模式空间的内容到标准输出
g # 将保持空间的内容复制到模式空间
= # =显示行号
-n # no-auto-print不自动输出每一行
sed '1,10s/old/new/g' a.txt # 打印a.txt中的old为new, 不会真正替换, s代表替换;g代表全局,否则只替换第一个匹配的词,1,10代表替换1-10行
sed -i 's/old/new/g' a.txt # 才会替换文本中的old为new
sed -n '/new/p' a.txt # 打印有new的行
sed -i '/new/d' a.txt # 删除有new的行
sed -i 'iold' a.txt # 在第一行插入old, 不加-i不会真正插入
sed -i '1aold' a.txt # 在第一行追加插入old
sed -i -e 's/old/new/g' -e 's/new/new1/g' a.txt # 执行多条替换命令
sed '/old/d; /new/d' file.txt # 打印所有不包含new和old的文本, 支持正则匹配
sed -i 's/7.200.200.20\/24/90.90.102.95\/23/g' a.txt
sed -i '191i \    print(\"nihao\")\n' a.py
sed -i '193d \    mt = as' a.py'
sed -i "$Ip" # 此时会替换IP为对应字符串
sed -i '/old/i new' new.py # 在new.py的old一行前插入
sed -i 's/old/&at/g' new.py # 在new.py的old后追加at,字段会由old变为oldat
sed -i 's/old/# &/g' new.py # 在new.py的old前追加#,字段会由old变为# old
sed -i '6r new.txt' old.txt # 将new.txt内中的内容读到old.txt第6行之后

磁盘管理命令

du命令

du -sh * # 以K,M,G为单位显示文件大小
-c # 统计所有文件容量

df命令

df -h # 显示挂在的磁盘
df -l # 排除网络文件系统

用户权限命令

pam.d修改root密码

修改密码时,可能会遇到限制更改以前设置过的密码

/etc/pam.d/system_auth
/etc/pam.d/passwd_auth
# 更改remeber=5

id命令

id lem # 查看lem用户的用户id、用户组id、用户组

image-20240908155133622

useradd命令

useradd -m boom # -m根用户下创建一个新用户并添加主目录
visudo # 查看超级用户权限
usermod -aG sudo boom # 将boom用户加入到sudo用户组, redhat下面是加入到%wheel
cat /etc/group | grep sudo # 查看sudo用户组有什么用户
echo $SHELL
usermod -s /bin/bash boom # 将默认为boom生成的sh改为/bash/sh,sh是没有上下键,tab这些的
groups boom # 查看用户boom所在组
cat group | grep sudo > /home/lem/name.txt
# 开启root用户登录权限
sudo vim /etc/ssh/sshd_config # 修改ssh连接配置
# 文件中添加这一行
PermitRootLogin yes # 许可root用户登录
sudo service ssh restart # 重启ssh服务

who命令

who # 查看当前登录用户数
whoami # 查看当前用户名
whatis gcc # 查看gcc是什么
whereis gcc # 查看gcc路径

系统资源监控命令

htop命令

htop # 显示硬件资源占用率

top命令

top # 监控资源,与htop命令类似,但是htop高亮比较好

ls系列查看系统资源信息

image-20240908115012874

lscpu # 能够显示系统字节序
lsmem # 列出内存信息
lspci # 列出PCI接口信息,可以用来查看是否有GPU等设备
lsns # 查看命名空间以及当前用户进程ID, 会显示以下六种文件
- cgroup # cgroup根目录
- pid # 进程ID
- user # 用户和用户组
- uts # 主机名与网络信息名
- ipc # 进程间通信资源,系统VIPC对象和POSIX消息队列
- mnt # mount文件系统挂载点
- net # network网络设备,ip地址、IP路由表、/proc/net目录,端口号
lsns -l 4026531835 # 查看特定命名空间的进程
lsns --output-all # 列出系统所有命名空间所有信息包括NETNSID网络子系统命名空间ID,NSFS文件系统挂载点(通常用于网络子系统)以及文件路径
lsb_release -a # 查看ubuntu系统发行版本命令
lsblk # 显示块设备(硬盘)
lslogins # 显示系统中的用户
lsmod # 显示当前加载到内核的模块
lsmod -a # 显示所有模块,包括未使用的
lsmod -t # 以树结构显示模块
lsmod -o # 显示模块详细信息

可以看出当前用户的命名空间是在5312进程下的命名空间。5321进程就是用户lem的进程ID,5312的父进程就是1号进程,就是root进程。

image-20240908115816513

u系列命令

image-20240908125824129

uname -a # 查看系统版本
ulimit -a # 获取或者设置用户限制信息包括栈的尺寸,管道大小等
ulimit -n # 查看当前最大用户文件描述符数量限制
ulimit -n 1024 # 设置最大文件描述符数量为1024
uset $http_proxy # 取消设置环境变量
umount # 取消挂载文件系统
mount # 查看挂在的文件系统

image-20240908125438432

ps系列命令

image-20240908123341985

pstree # 显示进程树信息
pstree -ps # 显示特定的进程以及其子进程进程树信息
ps -aux # 显示进程的一个快照
ps -ef
-a:显示所有终端的进程。
-u:以用户友好的方式显示进程信息,包括用户列、CPU 和内存使用率等。
-x:显示没有控制终端的进程
-e: 显示所有进程
-f: 以完整格式显示
ps -eo pid,ppid,comm # o指定特殊格式,e所有进程
ps -u $USER -o pid,ppid,comm # 显示当前用户的进程,以及进程ID

image-20240908124702508

cpuinfo查看cpu信息

# 真是深刻体会到了什么是一切即文件
cat /proc/cpuinfo # 查看cpu信息
cat /proc/filesystems # 查看文件系统
cat /proc/meminfo # 查看内存信息
cat /proc/interrupts # 查看中断信息

kill杀死进程命令

kill -9 PID # 强制终止进程
kill -L # 列出所有信号
kill -l 9 # 翻译9为信号名字sig name

systemctl控制服务命令

systemctl status firewalld # 查看服务状态
systemctl start firewalld # 启动服务
systemctl stop firewalld # 关闭服务
systemctl list-units # 列出当前启动的服务
systemctl -l # 与list类似
systemctl list-machines # 列出本地容器和主机,k8s也是一种host
systemctl list-jobs # 列出job
systemctl list-sockets # 列出当前内存中的通信socket
systemctl list-timers # 列出内存中的计时器

journalctl日志管理和监控命令

journalctl -u kubelet # 显示kubelet单元的日志信息
journalctl -n 10 -u kubelet # 显示kubelet单元的10行日志,相比于systemctl status显示的日志更多

ipmcset管理IPMI接口命令

ipmcset通常用于管理IPMI的工具,IMPI接口用于远程访问管理服务器的硬件,包括查看硬件状态、配置网络参数、管理用户权限等。ipm control set

-t # 指定类型,例如user为用户管理
-d # 指定设备,例如interface为用户接口
-v # 指定Vlaue
# 设置用户接口类型;分别设定用户lem可以登录的ibmc接口类型为:Web, SNMP, IPMI,SSH, SFTP,Local。
iBMC:/-> ipmcset -t user -d interface -v lem enabled 1 2 3 4 5 7
# 配置RAID
ipmcset -t storage -d createld -v 1 -rl r0 -pd 0
# 服务器上电
ipmcset -d powerstate -v 1
# 服务器下电
ipmcset -d powerstate -v 0
# 重启服务器
ipmcset -d frucontrol -v 0
# ipmc启动SOL连接(serial over LAN), -v指定串口, mode指定SOL会话模式,共享模式:0,独占模式1
ipmcset -t sol -d activate  -v <option> <mode>

ipmcget命令

ipmcget -d serialdir # 查看串口信息

free显示内存和交换区使用命令

free -h # 以k,M,G为单位显示内存使用情况

dmidecode查看dmi设备解码命令

dmidecode # 查看dmi设备管理接口信息

modprobe管理linux内核命令

modprobe <module> # 加载module模块
modprobe -r <module> # 卸载module模块
modinfo <module> # 查看模块信息
modinfo nf_conntrack # 查看nf_conntrack网络连接模块

软件包管理命令

apt命令

# 更改镜像源文件/etc/apt/sources.list
apt-get update // 更新软件包
apt-get upgrade // 升级现有包
apt-get install gcc // 安装gcc包
apt-cache madison <package-name> # 以表格形式显示软件包的可用版本

dpkg命令

dpkg -i xxx.deb

yum命令

# 更改配置文件
yum -y update
yum -y upgrade
vim /etc/yum.repos.d # 修改yum配置源

tar命令

-t # 列出归档中的文件,但不解压
-l # 归档中如果包含链接,显示这些链接的详细信息
-f # 指定归档中的文件
-z # 指明处理的是gzip压缩的归档文件,如.gz
-x # 指明解压缩
-v # 显示详细信息
tar -cf install.tar install # 压缩install目录到install.tar中
tar -ltf install.tar # 查看归档中的内容
tar -xf xxx.tar # 解压tar文件
tar -C share -zxvf xxx.tar.gz # -C解压到特定目录
tar -ltf install.tar.gz # 列出tar包

xz命令

xz -d xxx.tar.xz # 解压xz文件
tar xJf xxx.tar.xz # 也可以

zip命令

unzip xxx.zip -d [目标目录]
zip -r xxx.zip /path/files

网络管理命令

ping命令

ping 192.168.122.122 // ping这个地址来查看是否连通
ping -h // 查看可选参数

netstat查看网络连接命令

netstat <option> | grep <service> // 常用-anop
-a:显示所有活动连接和监听端口。
-l:显示侦听状态的服务。
-n:直接使用IP地址,而不是尝试确定符号主机、端口或用户名。
-o:显示每个连接的进程标识符(PID)和进程名称。这需要管理员权限。
-p:显示进程ID和名称(需要有足够的权限)。
-r:显示路由表。
-t:显示TCP表。
-u:显示UDP表。
-i:显示网络接口的统计信息。
-s:显示每个协议的统计信息
nestat -anop | grep 2000 // example

ss查看套接字信息命令

ss通常用于大量连接时更加好用

ss
-t # 指定tcp
-a # 所有协议
-p # 显示进程
-o # 显示计时器信息
-s # 显示所有连接使用率

ifconfig命令

ifconfig # 显示网卡信息
ifconfig eth0 down # 关闭网卡 ifup eth0
ifconfig eth0 up # 开启网卡 ifdown eth0

netplan命令

vim /etc/netplan/xxx.yaml # 更改网卡配置文件,netplan会从这里启动
sudo netplan apply # 更新网卡配置,重新启动网卡

值得注意的是,centos类的系统下,可以直接在/etc/networks-script目录下找到每个网卡的文件,如果是ubuntu系统参考上面的命令netplan

ip命令

用于替换更老的ifconfig

ip -a # 查看所有网卡信息包括激活的和未激活的
ip link show up # 查看激活的网卡
ip link set eth0 down # 关闭eth0网卡
ip link set eth0 name enp6s0 # 更改网卡名字
ip addr add 192.168.102.101/24 dev eth0 # 添加ip地址以及掩码
ip route default via 192.168.0.1 # 添加网关
ip link delete eth0 # 删除网卡

NetworkManager命令

nmtui # 以ui界面配置网络接口

ss名

posted @ 2024-07-19 14:17  LemHou  阅读(20)  评论(0)    收藏  举报