我正在尝试在 K8s cron 作业中运行多个命令。但是,日志中仅显示第一个作业输出。我有这个:
containers:
- name: myjob
image: postgres
args:
- /bin/sh
- -c
- PGPASSWORD=$(echo $password) psql -h $host -p 5432 -U $username -d $db -c "\copy (select * from blah limit 1) to blah.txt" ; echo bar.txt ; cat bar.txt;
- PGPASSWORD=$(echo $password) psql -h $host -p 5432 -U $username -d $db -c "\copy (select * from foo limit 1) to foo.txt" ; date ; echo foo.txt ; cat foo.txt;
restartPolicy: OnFailure
我只看到第一个命令的输出。我希望能够指定多个命令并一一运行它们。
答案1
-c
只需在with&&
或;
运算符之后将它们连接在一行中
查看完整答案这里
答案2
只需通过 a 运行两个命令Pod 中的标准过程。
command: ["/bin/sh","-c"]
args: ["command one; command two && command three"]
然而,我怀疑这是一个好主意它应该被用作最后的希望。集装箱被设计为仅运行一个进程和 CronJobs 使用吊舱规格。
因此,我可以推荐以下内容。顺序很重要。
- 如果您的任务完全独立,则运行两个单独的 CronJobs。
- 在 CronJob 中运行两个单独的容器。如果您的容器之一失败,CronJob 将失败。
- 使用
initContainers
达到某种秩序或之前的准备。