Liunx常用命令和工具
Linux Commands
常用man command_name
和tab&tab
查看更多选项的是个好习惯。
<<<
<<<
是一种 Bash Shell 的特殊语法,用于将一个字符串作为标准输入传递给一个命令。它的作用类似于 echo
命令和管道符 |
的组合,但是更加简洁和高效。
具体来说,<<<
会将其后面的字符串作为标准输入传递给命令。例如,bc -l <<< "2 + 3"
将字符串 "2 + 3"
作为标准输入传递给 bc -l
命令,bc -l
会计算这个表达式并输出结果。
需要注意的是,<<<
只能用于 Bash Shell 中,其他 Shell 可能不支持这种语法。
compgen
compgen -c
列出系统的所有命令
date
date -d 'today +4day2hour58min' +%F %T %w
查询时间 计算时间
%F
以2024-01-01 格式输出日期
%T
以24:59:59 格式输出时间
%w
以周一为第一天计算一周第几天
ln
ln –s 源文件 目标文件
,例如将usrlocalbin下命令链接到usrbin下
ls
-I
忽略某个文件
1
2
3
4
./1.txt
./2.txt
ls -I 1.txt
#: 2.txt
openssl
openssl 是linux自带的加解密工具 例如:# echo "123" | openssl enc -e -aes-256-ecb -K eb1a05a430104f12b4d89429db9ecef3 -nosalt -base64
解密:# echo "xxxx" | openssl enc -d -aes-256-ecb -K eb1a05a430104f12b4d89429db9ecef3 -nosalt -base64
ps
ps
命令:ps 是 “process status” 的缩写,这个命令用于显示当前进程的状态。它提供了关于进程(如进程 ID、当前状态、CPU 使用率、命令行等)的静态视图。默认情况下,ps
只显示当前 shell 和与之关联的进程,但你可以通过选项(如 -e
或 -A
)来显示所有进程。ps
是一个 “一次性” 的命令,意思是它只会运行一次,然后显示那个时刻的进程信息。
top
top
命令:top
是 “table of processes” 的缩写,这个命令用于动态显示进程信息。top
提供了一个实时的、交互式的视图,显示了系统中的进程并按 CPU 使用率排序。你可以在 top
的界面中进行操作,例如发送信号给进程。top
是一个 “持续性” 的命令,意思是它会持续运行,并实时更新显示的信息。
ss
ss -tln
可以查看套接字活动端口 ss
是socket statistics 缩写
head/tail
head
,tail
按行查看文件内容 -n 2
查看两行
tree
用 tree
命令可以查看目录结构,一些参数 -L
查看第几级
more/less
more
, less
翻页查看
tac
tac
是cat
反过来,可以倒序输出内容
隔一秒显示时间
while [ 1==1 ]; do date +%F\ %T; sleep 1; clear; done
ntpdate
ntpdate ntp.aliyun.com
uuidgen
uuidgen
可以生成一串如格式f3e10cf9-d4ba-41bb-b19e-75f118d157ee的uuid
wc
wc -l
统计行数 -w
总单词数 -c
总字节数
cal
cal
可以显示当前月日历,当然字符串版 参数 -m
周一为第一天,-j
一年中序数,-y
当前年日历
nl
nl
文件,可以显示文件内容和行号
pwd
pwd -P
显示真实路径,例如/bin是/usr/bin的链接 会正确显示当前在/bin还是/usr/bin下面
xargs
xargs
由于很多命令不支持 |
管道来传递参数 xargs
可以在管道符下 传参 例如:
1
2
3
4
5
6
7
8
9
10
[root@ywang test1]# find ./ -name "*.exe" | ls -l
total 36
-rw-r--r-- 1 root root 111 Sep 6 11:18 calc1.c
-rwxr-xr-x 1 root root 8360 Sep 6 11:18 calc1.exe
-rw-r--r-- 1 root root 337 Aug 31 17:26 fork1.c
-rwxr-xr-x 1 root root 8512 Aug 31 17:26 fork1.exe
-rw-r--r-- 1 root root 110 Sep 6 16:34 helloworld.java
[root@ywang test1]# find ./ -name "*.exe" | xargs ls -l
-rwxr-xr-x 1 root root 8360 Sep 6 11:18 ./calc1.exe
-rwxr-xr-x 1 root root 8512 Aug 31 17:26 ./fork1.exe
selinux/setenforce
selinux是linux的一个安全模块,setenforce
命令设置状态,usage: setenforce [ Enforcing | Permissive | 1 | 0 ]
, 三种状态,强制打开,只写入日志和disabled
,前两种状态切换可以使用1/0
,getenforce
命令查看安全状态。
tee
从标准输入流(键盘)写入到文件,tee -a filename
。
ln, alias
在Linux中,如使用file命令查看/bin/java是一个什么文件:
1
2
# file /bin/java
# /bin/java: symbolic link to /etc/alternatives/java
这个意思/bin/java
是一个符号链接,它实际链接到可执行文件/etc/alternatives/java
,查看java可执行文件才会出现:
1
/usr/lib/jvm/jdk-22-oracle-x64/bin/java: ELF 64-bit LSB shared object, x86-64, ver...
符号链接(symbolic link),也称为软链接(soft link),是一种特殊类型的文件,它包含了指向另一个文件或目录的路径。符号链接允许您在文件系统中创建一个指向另一个文件或目录的引用,类似于Windows系统中的快捷方式。
1
ln -s <目标文件或目录> <符号链接文件名>
alias
命令是创建别名,跟ln
不是一个东西,例如查看.bashrc
文件:
1
2
3
4
5
6
7
8
9
# cat .bashrc
# .bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
...
rc-local.service
编辑/etc/rc.local
即/etc/rc.d/rc.local
添加命令
[经过测试,下面这一步不是必须的] 编辑/usr/lib/systemd/system/rc-local.service
(一般只缺少最后install
)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[Unit]
Description=/etc/rc.d/rc.local Compatibility
Documentation=man:systemd-rc-local-generator(8)
ConditionFileIsExecutable=/etc/rc.d/rc.local
After=network.target
[Service]
Type=forking
ExecStart=/etc/rc.d/rc.local start
TimeoutSec=0
RemainAfterExit=yes
GuessMainPID=no
[Install]
WantedBy=multi-user.target
启动systemctl daemon-reload; systemctl start rc-local
,添加至开机自启动systemctl enable rc-local
, 经过测试,上面可以直接用systemctl restart rc-local
代替
如果命令需要联网,可以把命令放在.sh中,.sh中检查是否联网成功再运行:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 设置初始计时器
SECONDS=0
# 持续尝试ping直到ping通,最多尝试120秒
while [ $SECONDS -lt 120 ]; do
ping -c 1 www.baidu.com > /dev/null 2>&1
if [ $? -eq 0 ]; then
# 网络连接正常,跳出循环
break
fi
sleep 5 # 每隔5秒尝试一次
done
# 网络连接正常
command
docker
安装:
1、推荐删除旧版本,如果有的话yum remove docker
2、虽然,但是先配置下载docker的下载源
1
2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
3、安装依赖包yum install -y yum-utils
4、安装docker
1
yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
5、启动
1
2
systemctl enable docker
systemctl start docker
6、虽然,但是先配置docker下载镜像的国内下载源
1
2
3
4
5
6
7
8
9
10
11
12
13
// 执行 systemctl cat docker | grep '\-\-registry\-mirror'
// 如果没有输出则可编辑/etc/docker/daemon.json添加一下内容
// 阿里云容器加速服务在24.07.02变更为仅其产品能使用
{
"registry-mirrors": [
"可以复制一个aliyun容器加速服务链接到这里",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
}
// 重启
systemctl daemon-reload
systemctl restart docker
简单使用:
下载镜像docker pull ubuntu:22.04
,其中:
前后为系统和版本号
查看镜像docker image ls -a
删除镜像docker rm 镜像id
使用镜像创建容器docker run -it [--rm] [--name 自命名] ubuntu:22.04
查看已有容器docker ps -a
停止容器docker stop 容器id
开始已停止容器docker start 容器id
进入已存在的容器docker attach 容器id
, 注意此方法在容器内终端使用Ctrl D
退出容器,容器会停止,需使用docker start 容器id
重新启动容器
进入已存在的容器docker exec -it 容器id bash
, 注意此方法相较于attach
退出后不需要start
命令也可再次进入
查看容器信息docker inspect 容器id
创建数据卷docker volume create 卷名
列出数据卷docker volume ls
查看数据卷信息docker volume inspect 卷名
挂载数据卷,使用-v
挂载,建议创建时挂载好,不然很麻烦docker run -it -v 卷名:容器内路径 ubuntu:22.04
挂载数据卷,使用--mount
挂载,docker run -it --mount type=bind,source=主机路径,target=容器内路径 ubuntu:22.04
创建时将容器内80
端口映射到主机8080
,docker run -p 8080:80 镜像
,默认映射TCP协议,如果映射其他协议,格式如80:80/udp
创建时映射多个端口docker run -p 8080:80 -p 8443:443 镜像
创建时默认映射所有端口docker run -P 镜像
,注意这个默认映射至主机是随机的
yes
当如使用rm filename
命令,会出现需要输入(y/n)
进行确认,如果使用yes | rm filename
,则自动输入y
确认操作