Linux常用命令实践

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

关机命令:

1、halt 立刻关机
2、poweroff 立刻关机
3、shutdown -h now 立刻关机(root用户使用)
4、shutdown -h 10 10分钟后自动关机 如果是通过shutdown命令设置关机的话,可以用shutdown -c命令取消重启

重启命令:

1、reboot
2、shutdown -r now 立刻重启(root用户使用)
3、shutdown -r 10 过10分钟自动重启(root用户使用)
4、shutdown -r 20:35 在时间为20:35时候重启(root用户使用) 如果是通过shutdown命令设置重启的话,可以用shutdown -c命令取消重启

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(定时任务)

安装

1
2
3
4
5
6
7
8
9
安装:apt-get install cron
启动:service cron start
重启:service cron restart
停止:service cron stop
检查状态:service cron status
查询cron可用的命令:service cron
检查Cronta工具是否安装:crontab -l
设置 cron 服务在系统启动时自动启动:systemctl enable cron
立即启动 cron 服务:systemctl start cron

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)

mail(邮件)

安装,之后配置防火墙并重启

1
2
sudo apt-get install mailutils
sudo apt install ssmtp

编辑ssmtp配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
sudo vim /etc/ssmtp/ssmtp.conf

#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=Overstars@foxmail.com

# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=smtp.qq.com:465
AuthUser=Overstars@foxmail.com
AuthPass=生成的QQ授权码
UseTLS=Yes

hostname=overstars

QQ邮箱授权码可以在 邮箱设置-账号-POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 中开启,也可参考SMTP/IMAP服务

1
2
3
4
5
sudo vim /etc/ssmtp/revaliases
----------------------------------
# 添加以下语句
overstars:Overstars@foxmail.com:smtp.qq.com:465 # oversatrs是当前电脑的用户名
----------------------------------

测试一下

1
echo "This is the mail body" | mail -s "TEST"  receive@foxmail.com

image-20240924222555186

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