文章

Liunx常用命令和工具

Liunx常用命令和工具

Linux Commands

常用man command_nametab&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

headtail 按行查看文件内容 -n 2 查看两行

tree

tree 命令可以查看目录结构,一些参数 -L 查看第几级

more/less

more, less 翻页查看

tac

taccat反过来,可以倒序输出内容

隔一秒显示时间

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/0getenforce命令查看安全状态。

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端口映射到主机8080docker 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确认操作

本文由作者按照 CC BY 4.0 进行授权

热门标签