如何在Linux中创建一个同时执行多个任务的bash脚本
我想创建一个包含以下内容的bash脚本:如何在Linux中创建一个同时执行多个任务的bash脚本,linux,bash,Linux,Bash,我想创建一个包含以下内容的bash脚本: I/O重定向 管道 符号链接 外卡 将用户添加到多个组 我知道如何执行命令来分别创建每个命令,但我不知道如何创建一个bash脚本来同时执行所有命令。有人能帮我吗?我将不胜感激 #/bin/bash cd /home mkdir testdir && cd testdir touch testfile.txt | ln -s /etc/passwd symboliclink &&
#/bin/bash
cd /home
mkdir testdir &&
cd testdir
touch testfile.txt | ln -s /etc/passwd symboliclink && cd .. | mkdir things && cp -rf /testdir /things | usermod -aG admins,hr,payroll test
将您想做的每件事放在函数中,然后对每件事的执行进行后台处理:
do_redirection_stuff() {
# your stuff here
}
do_wild_card_stuff() {
# your stuff here
}
do_symbolic_link_stuff() {
# kool stuff
}
do_parallel_tasks() {
do_redirection_stuff &
do_wild_card_stuff &
do_symbolic_link_stuff &
wait # For all of them to finish
}
do_parallel_tasks
更新(代码已添加到OP的问题中)
您似乎对如何使用shell重定向感到困惑。在您提供的代码中,您应该串行执行每个命令。类似地,这些命令都不可能阻塞很长时间,因此并行执行这些命令是过分的
#!/bin/bash
cd /home
mkdir testdir
cd testdir
touch testfile.txt
ln -s /etc/passwd symboliclink
cd ..
mkdir things
cp -rf /testdir /things
usermod -aG admins,hr,payroll test
将您想做的每件事放在函数中,然后对每件事的执行进行后台处理:
do_redirection_stuff() {
# your stuff here
}
do_wild_card_stuff() {
# your stuff here
}
do_symbolic_link_stuff() {
# kool stuff
}
do_parallel_tasks() {
do_redirection_stuff &
do_wild_card_stuff &
do_symbolic_link_stuff &
wait # For all of them to finish
}
do_parallel_tasks
更新(代码已添加到OP的问题中)
您似乎对如何使用shell重定向感到困惑。在您提供的代码中,您应该串行执行每个命令。类似地,这些命令都不可能阻塞很长时间,因此并行执行这些命令是过分的
#!/bin/bash
cd /home
mkdir testdir
cd testdir
touch testfile.txt
ln -s /etc/passwd symboliclink
cd ..
mkdir things
cp -rf /testdir /things
usermod -aG admins,hr,payroll test
昨天我学习了一个叫做并行的工具:
它使并行运行任意数量的任务变得非常容易,并对其输出进行排序。花点时间浏览一下教程,时间会花得很好的 我昨天学习了一个叫做
parallel
的工具:
它使并行运行任意数量的任务变得非常容易,并对其输出进行排序。花点时间浏览一下教程,时间会花得很好的 詹姆逊,谢谢你的例子。但是我仍然很难理解整个过程!有没有更简单的方法来完成这项任务?@shabam你应该发布到目前为止的代码,以便进行具体讨论。我已经在我的问题中补充了我到目前为止所做的工作。非常感谢您的帮助。在脚本末尾,我试图创建一个别名。所以,我所做的是:echo“alieastest='cd&&./myscript.sh'>>~/.bashrc.~/。bashrc它确实将该行添加到.bashrc中,但是看起来,~/。巴什,它不起作用了。你能帮忙吗。我不知道我做错了什么!詹姆逊,谢谢你的例子。但是我仍然很难理解整个过程!有没有更简单的方法来完成这项任务?@shabam你应该发布到目前为止的代码,以便进行具体讨论。我已经在我的问题中补充了我到目前为止所做的工作。非常感谢您的帮助。在脚本末尾,我试图创建一个别名。所以,我所做的是:echo“alieastest='cd&&./myscript.sh'>>~/.bashrc.~/。bashrc它确实将该行添加到.bashrc中,但是看起来,~/。巴什,它不起作用了。你能帮忙吗。我不知道我做错了什么!