Nie ma ogólnego rozwiązania, ponieważ istnieje niezliczona ilość sposobów, za pomocą których skrypt może wywoływać inne skrypty. Możesz zrobić coś, grepco może działać dla twoich skryptów, ale ogólnie nie.
Jakie skrypty to wywołuje?
$(find / -executable -name "*.sh" -print0 | shuf -z -n 1)
Jeśli jesteś w stanie uruchomić te skrypty, możesz je prześledzić na dwa sposoby.
set -x
sprawi, że skrypt wydrukuje każde wykonane polecenie w rozszerzonej formie. Następnie możesz sprawdzić te polecenia pod kątem tych, które uruchamiają skrypty.
strace -ff
Przesada, ale stracedaje ci wszystko, co robi proces, a dzięki -ffopcji podąża za króliczą dziurą prawie do końca. Mówię prawie dlatego, że istnieją sposoby na obejście tego. Czy podąża za demonami?
Grep stracedla wywołań open()lub exec*()filtruj je w poszukiwaniu plików, które są skryptami, a możesz być gdzieś w pobliżu pełnego obrazu [dla tego jednego uruchomienia skryptu, który wykonałeś - nie licząc skryptów, które są wywoływane tylko w innych warunkach].
$ strace -ff ./testscript.sh |& grep 'open.*\.sh"'
open("./testscript.sh", O_RDONLY) = 3
[pid 24486] open("./CD-DVD Image erstellen.sh", O_RDONLY) = 3
Możesz więc być kreatywny ze swoimi rozwiązaniami, po prostu nie oczekuj takiego, który pasuje do każdej sytuacji.
trussWywołańexecsystemowych?