Linux常用命令实践

有些Linux命令或者参数还是蛮有用但是不常用的,需要记录一下,这样就不用到处找了。

Terminal

SCREEN(后台挂起)

1
2
3
4
5
6
7
8
9
10
11
12
13
# 查询screen提示
screen -help
# 使用screen -R命令,如果不存在则创建一个screen,如果存在则会直接进入
# 使用-S创建和直接输入screen创建的虚拟终端,不会检录之前创建的screen
screen -R Name
# -r不会创建,只会进入
screen -r [pid/name]
# 查看在后台运行的终端
screen -ls
# 退出终端并释放资源,在screen内使用
exit
# 使用-R/-r/-S均可,释放资源,在terminal使用
screen -R [pid/Name] -X quit

SCREEN绑定键

在虚拟终端内,输入Ctril + a将等待接受预先设置的绑定键,这个时候可以输入对应的一些命令,来操作虚拟终端,如:

  • d:保存会话,后台运行改虚拟终端,返回terminal
  • k:关闭对话,等同输入:exit
  • c:新建一个虚拟终端
  • ?:显示所有绑定键盘
1
2
# 修改文件
vim ~/.screenrc

crontab(定时任务)

crond 命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。

1
2
3
4
5
6
7
8
crontab [ -u user ] file
crontab [ -u user ] { -l | -r | -e }
-u user:用来设定某个用户的crontab服务
-e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe)
-r : 删除目前的时程表
-l : 列出目前的时程表
# 查看系统调度任务
cat /etc/crontab

直接使用 crontab -e 进入编辑模式即可新建任务,每个任务格式如下:

1
2
3
4
5
6
7
m    h    dom  mon  dow   command
| | | | |
| | | | +----- 星期中星期几 (0 - 6) (星期天 为0)
| | | +---------- 月份 (1 - 12)
| | +--------------- 一个月中的第几天 (1 - 31)
| +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)

Docker

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
## 镜像命令
docker images 查看docker镜像
docker images -a #列出本地所有的镜像
docker images -q #只显示镜像ID
docker images --digests #显示镜像的摘要信息
docker images --no-trunc #显示完整的镜像信息
docker rmi hello-world #从Docker中删除hello-world镜像
docker rmi -f hello-world #从Docker中强制删除hello-world镜像
## 容器命令
docker ps #列出当前所有正在运行的容器
docker ps -a #列出所有的容器
docker ps -l #列出最近创建的容器
docker ps -n 3 #列出最近创建的3个容器
docker ps -q #只显示容器ID
docker ps --no-trunc #显示当前所有正在运行的容器完整信息
exit #退出并停止容器
Ctrl+p+q #只退出容器,不停止容器
docker start 容器ID或容器名称 #启动容器
docker restart 容器ID或容器名称 #重新启动容器
docker stop 容器ID或容器名称 #停止容器
docker kill 容器ID或容器名称 #强制停止容器
docker rm 容器ID或容器名称 #删除容器
docker rm -f 容器ID或容器名称 #强制删除容器
docker rm -f $(docker ps -a -q) #删除多个容器
docker logs -f -t --since --tail 容器ID或容器名称 #查看容器日志
如:docker logs -f -t --since=”2018-09-10” --tail=10 f9e29e8455a5
 -f : 查看实时日志
 -t : 查看日志产生的日期
 --since : 此参数指定了输出日志开始日期,即只输出指定日期之后的日志
 --tail=10 : 查看最后的10条日志
docker top 容器ID或容器名称 #查看容器内运行的进程
docker inspect 容器ID或容器名称 #查看容器内部细节,更新镜像时是重要的参考配置文件
docker attach 容器ID #进到容器内
docker exec 容器ID #进到容器内

新建目录

1
mkdir -p $HOME/docker/navidrome && cd $HOME/docker/navidrome && mkdir -p /data/media/music && chmod 755 -R /data/media/music

在navidrome目录下新建docker-compose.yaml

如果指定users,似乎会出现不好解决的bug,所以删去。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
services:
navidrome:
image: deluan/navidrome:latest
container_name: navidrome
ports:
- 9001:4533 #左侧端口如有冲突,可随意修改,并在防火墙开放
volumes:
- $HOME/docker/navidrome:/data #数据路径
- /data/media/music:/music:ro #音乐路径
environment:
#程序默认语言
- ND_DEFAULTLANGUAGE=zh-Hans
#启用GRAVATAR头像
- ND_ENABLEGRAVATAR=true
#关闭转码,如需要转码请设置为true
- ND_ENABLETRANSCODINGCONFIG=false
#SPOTIFY相关
# - ND_SPOTIFY_ID=
# - ND_SPOTIFY_SECRET=
#LAST.FM相关
# - ND_LASTFM_LANGUAGE=zh
# - ND_LASTFM_APIKEY=
# - ND_LASTFM_SECRET=
#PROXY相关
# - HTTP_PROXY=http://proxy:port
# - HTTPS_PROXY=http://proxy:port
restart: unless-stopped

按顺序执行命令

1
2
3
4
5
6
7
8
9
10
11
12
13
docker compose up -d
docker compose ps
#若报错,执行
docker-compose up -d
docker-compose ps
#若修改了yaml
docker-compose pull
docker-compose up -d [需要更新的服务]
docker image prune
#或者
docker-compose stop [service-name]
docker-compose rm -f [service-name]
docker-compose up -d [service-name]

防火墙开放9001,tcp

1
2
3
4
5
6
sudo ufw status
sudo ufw allow 9001
sudo ufw status verbose
sudo ufw reload

sudo netstat -tuln | grep 9001

访问 IP:9001

新建管理员用户

1
2
Overstars
Overstars

SHELL

1
2
3
4
5
uat: 182.119.78.15
uat2: 182.214.14.217
uatc: 182.214.93.115
tranCode=MUIP0643 & key=cache_dispatcher_
增/改tranCode=MUIP0642 & key=cache_dispatcher_ &value
1
2
3
4
5
while read line
do
echo $line
array=(${line// / })
done < test.txt