跳至主要内容

shell一次性执行多条命令

 1.每个命令之间用;隔开

说明:各命令的执行给果,不会影响其它命令的执行。换句话说,各个命令都会执行,但不保证每个命令都执行成功。

2.每个命令之间用&&隔开
说明:若前面的命令执行成功,才会去执行后面的命令。这样可以保证所有的命令执行完毕后,执行过程都是成功的。

3.每个命令之间用||隔开
说明:||是或的意思,只有前面的命令执行失败后才去执行下一条命令,直到执行成功一条命令为止。

比如:

sudo -u root whoami && sudo -u root unzip -o -d /apps /apps/zhenxi.zip && sudo -u root

进入Docker时,始终是镜像的初始状态,需要手动开启各种服务,以及之前做过但没有保留状态的操作,如果比较多的时候,就比较麻烦,所以可以编写一个文件,包含我们所需要运行的所有命令,这样直接运行该文件就可以自动完成准备工作。

以开启apache和mysql服务为例:

1、编写脚本文件,列出所有需要执行的命令(自定义名称为run.sh)

#!/bin/sh
service apache2 start;
service mysql start;

#!/bin/sh是指此脚本使用/bin/sh来解释执行,#!是特殊的表示符,其后面根的是此解释此脚本的shell的路径。

其实第一句的#!是对脚本的解释器程序路径,脚本的内容是由解释器解释的,我们可以用各种各样的解释器来写对应的脚本。

比如说/bin/csh脚本,/bin/perl脚本,/bin/awk脚本,/bin/sed脚本,甚至/bin/echo等等。

—–来源

2、修改权限

chmod -R 777 run.sh

3、执行该脚本文件

./run.sh

评论

此博客中的热门博文

科学上网工具Sub-Store部署使用

  转自: https://www.qichiyu.com/268.html Openwrt Docker安装: docker run -it -d \ --restart=always \ -e " SUB_STORE_BACKEND_SYNC_CRON =55 23 * * *" \ -e SUB_STORE_FRONTEND_BACKEND_PATH=/CKg2abstVnOeRpm1aB4G \ --net=host \ -v /etc/sub-store:/opt/app/data \ --name sub-store \ xream/sub-store VPS安装: docker run -it -d \ --restart=always \ -e " SUB_STORE_BACKEND_SYNC_CRON =50 23 * * *" \ -e SUB_STORE_FRONTEND_BACKEND_PATH=/T3B9dgzBzdRbBF8Aqx7P \ -p 3001:3001 \ -v /etc/sub-store:/opt/app/data \ --name sub-store \ xream/sub-store Docker compose代码: services: sub-store: stdin_open: true tty: true restart: always environment: - SUB_STORE_BACKEND_SYNC_CRON =50 23 * * * - SUB_STORE_FRONTEND_BACKEND_PATH=/iversonlive123456789 ports: - 3001:3001 volumes: - /etc/sub-store:/opt/app/data container_name: sub-store image: xream/sub-store networks: {} Sub-store地址: 如果你没有使用域名,那么请访问 http://192.168.0.188:3001?api=http://192....

Debian/Ubuntu下MoviePilot V2基本部署

  一,直接用docker-compose: cd /var/lib/docker mkdir -p mp & cd /var/lib/docker/mp (mp可以随意写) 创建一个docker-compose.yml: nano docker-compose.yml 内容如下,自行修改 (文字缩进有问题) (PS. 1,站点认证那里不写也可以,登录后可再认证;2初始密码在log文件中) services: moviepilot: stdin_open: true tty: true container_name: moviepilot-v2 hostname: moviepilot-v2 networks: – moviepilot ports: – target: 3000 published: 3000 protocol: tcp volumes: – /volume1/mp/media:/media – /volume1/mp/config:/config – /volume1/mp/core:/moviepilot/.cache/ms-playwright – /var/run/docker.sock:/var/run/docker.sock:ro environment: – NGINX_PORT=3000 # 别改看下面说明介绍 – PORT=3001 – PUID=0 – PGID=0 – UMASK=000 – TZ=Asia/Shanghai – AUTH_SITE= # 认证站点名称改成自己的 – PTVICOMO_UID= # 认证站点用户ID改成自己的 – PTVICOMO_PASSKEY= # 认证站点秘钥改成自己的 – SUPERUSER=admin # 超级管理员用户名,默认admin改成自己的 # – ‘API_TOKEN=无需手动配置,系统会自动生成。如果需要自定义配置,必须为16位以上的复杂字符串’ restart: always image: jxxghp/moviepilot-v2:latest networks: moviepilot: name: moviepilot 完了后docker-compose up -d。 部署成功后用IP:3000可登录。 二,如果用Dockge,则先装好Dockge(另一...