有些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 14 15 # 查询screen提示 screen -help # 查看在后台运行的终端 screen -ls # 使用screen -R命令,如果不存在则创建一个screen,如果存在则会直接进入 # 使用-S创建和直接输入screen创建的虚拟终端,不会检录之前创建的screen screen -R Name # -r不会创建,只会进入 screen -r [pid/name] # 分离(分离会话而不终止它) 按下 Ctrl + A,然后按 D # 退出终端并释放资源,在screen内使用 exit # 使用-R/-r/-S均可,释放资源,在terminal使用 screen -R [pid/Name] -X quit
SCREEN绑定键 在虚拟终端内,输入Ctril + a
将等待接受预先设置的绑定键 ,这个时候可以输入对应的一些命令,来操作虚拟终端,如:
d:保存会话,后台运行改虚拟终端,返回terminal
k:关闭对话,等同输入:exit
c:新建一个虚拟终端
?:显示所有绑定键盘
安装
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 # # # 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
Docker 1 2 3 4 5 6 curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh sudo service docker start curl -fsSL https://test.docker.com -o test-docker.sh sudo sh test-docker.sh
会提示,安装成功
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ================================================================================ To run Docker as a non-privileged user, consider setting up the Docker daemon in rootless mode for your user: dockerd-rootless-setuptool.sh install Visit https://docs.docker.com/go/rootless/ to learn about rootless mode. To run the Docker daemon as a fully privileged service, but granting non-root users access, refer to https://docs.docker.com/go/daemon-access/ WARNING: Access to the remote API on a privileged Docker daemon is equivalent to root access on the host. Refer to the 'Docker daemon attack surface' documentation for details: https://docs.docker.com/go/attack-surface/ ================================================================================
免sudo使用docker命令
1 2 3 sudo gpasswd -a $USER docker newgrp docker docker ps
卸载 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 sudo systemctl stop docker ps -ef | grep docker | awk '{print $2}' | xargs sudo kill -s 9 sudo rm -rf /var/lib/docker sudo rm -rf /var/run/docker sudo rm -rf /var/run/docker.sock sudo rm -rf /var/run/docker.pid sudo rm -rf /etc/systemd/system/docker.service sudo rm -rf /etc/docker/daemon.json sudo rm -rf ~/.docker/ whereis docker sudo rm -rf /usr/bin/docker apt-get autoremove docker docker-ce docker-engine docker.io containerd runc apt-get autoremove docker-ce-* dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P # 删除无用的相关的配置文件
或者按照官方文档卸载
1 2 3 4 5 6 7 8 # Uninstall the Docker Engine, CLI, containerd, and Docker Compose packages: sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras # Images, containers, volumes, or custom configuration files on your host aren't automatically removed. To delete all images, containers, and volumes: sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd # Remove source list and keyrings sudo rm /etc/apt/sources.list.d/docker.list sudo rm /etc/apt/keyrings/docker.asc
常用命令 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 35 36 # sudo docker search keywords # 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="2025-02-22" --tail=10 容器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 #进到容器内
常见报错 可能是由于网络 问题、DNS服务器问题等导致的。
1 2 3 4 # 重启试试 sudo systemctl restart docker # 检查DNS,如果显示nameserver后面没有IP地址,或者显示的IP地址有问题,可以尝试修改该文件。 cat /etc/resolv.conf
修改Docker配置文件
1 vim /etc/ docker/daemon.json
添加
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 { "builder" : { "gc" : { "defaultKeepStorage" : "20GB" , "enabled" : true } } , "experimental" : false , "registry-mirrors" : [ "https://docker.hpcloud.cloud" , "https://docker.m.daocloud.io" , "https://docker.unsee.tech" , "https://docker.1panel.live" , "http://mirrors.ustc.edu.cn" , "https://docker.chenby.cn" , "http://mirror.azure.cn" , "https://dockerpull.org" , "https://dockerhub.icu" , "https://hub.rat.dev" , "https://proxy.1panel.live" , "https://docker.1panel.top" , "https://docker.m.daocloud.io" , "https://docker.1ms.run" , "https://docker.ketches.cn" ] }
重启守护进程
1 sudo systemctl restart docker
或者换源,例如登录阿里云 制品中心 看看想要的镜像,并复制制品地址(未成功,可能只能在阿里云使用)
1 2 curl -s https:// registry.cn-hangzhou.aliyuncs.com/v2/ library/nginx/ tags/list | jq
Navidrome 新建目录
1 mkdir -p $HOME /docker/ navidrome && cd $HOME /docker/ navidrome && mkdir -p /data/m edia/music && chmod 755 -R / data/media/mu sic
在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 - ND_ENABLEGRAVATAR=true - ND_ENABLETRANSCODINGCONFIG=false 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
新建管理员用户
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