在shell脚本中杀死进程

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
百草谷居士
帖子: 3921
注册时间: 2006-02-10 16:36
系统: Mint21.1/Deepin20.8

在shell脚本中杀死进程

#1

帖子 百草谷居士 » 2021-10-22 13:13

备份 fcitx-rime 词库时,需要先杀死 fcitx 进程。手工操作时,先

代码: 全选

ps -A | grep fcitx
这时候会列出三四个进程号,然后 sudo kill xxx yyy zzz ,杀死这些进程后,才能使用 rime_dict_manager 完成备份用户词库的任务。
现在想使用脚本完成这个任务,请问,如何在 shell 脚本中杀死 fcitx 的相关进程?
debian 12 / 深度系统 20.9 / Mint 21.3

为何热衷于搞发行版的多,搞应用程序开发的少?Linux最多余的就是各种发行版,最缺的就是应用程序,特别是行业应用程序。
头像
astolia
论坛版主
帖子: 6452
注册时间: 2008-09-18 13:11

Re: 在shell脚本中杀死进程

#2

帖子 astolia » 2021-10-22 14:18

用killall或pkill
头像
百草谷居士
帖子: 3921
注册时间: 2006-02-10 16:36
系统: Mint21.1/Deepin20.8

Re: 在shell脚本中杀死进程

#3

帖子 百草谷居士 » 2021-10-22 14:31

这是我写的脚本:

代码: 全选

cd ~/.config/fcitx/rime
ps -A|grep fcitx
ps -A|grep fcitx|cut -c 1-7|xargs -t sudo kill 
sleep 2
rime_dict_manager -e luna_pinyin ~/data/rime用户词库$(date +%Y%m%d).txt
fcitx-autostart&
cd ~
目前有两个问题:
第一,出现提示:Date: try "date -d @1634884172" if you are using GNU date ***
第二,无法回到 ~ 目录。
debian 12 / 深度系统 20.9 / Mint 21.3

为何热衷于搞发行版的多,搞应用程序开发的少?Linux最多余的就是各种发行版,最缺的就是应用程序,特别是行业应用程序。
onlylove
论坛版主
帖子: 5231
注册时间: 2007-01-14 16:23

Re: 在shell脚本中杀死进程

#4

帖子 onlylove » 2021-10-22 16:55

如果是bash,可以用 -x 参数调试,

不过貌似你的问题

第一个错可能是取时间的时候出错了
第二个,因为上一步取时间出错了,所以脚本可能停了,可以用$?看下上一条命令的执行结果

或者加个 echo什么的看看执行到哪里了
头像
百草谷居士
帖子: 3921
注册时间: 2006-02-10 16:36
系统: Mint21.1/Deepin20.8

Re: 在shell脚本中杀死进程

#5

帖子 百草谷居士 » 2021-10-22 17:02

词库备份完成,生成的文件名也是预期的。
下面一句的fcitx也重新启动。

date 部分可能只是个警告信息。但是单独在命令行使用 date +%Y%m%d 没有任何警告信息。

fcitx-autostart& 执行后没有处于一个等待状态,需要按下回车键,返回命令行提示符。但并没有执行下面的 cd ~
debian 12 / 深度系统 20.9 / Mint 21.3

为何热衷于搞发行版的多,搞应用程序开发的少?Linux最多余的就是各种发行版,最缺的就是应用程序,特别是行业应用程序。
头像
百草谷居士
帖子: 3921
注册时间: 2006-02-10 16:36
系统: Mint21.1/Deepin20.8

Re: 在shell脚本中杀死进程

#6

帖子 百草谷居士 » 2021-10-22 17:17

astolia 写了: 2021-10-22 14:18 用killall或pkill
哈哈,竟然一直不知道这两个命令。可以直接使用 进程名 来终止进程。方便!
debian 12 / 深度系统 20.9 / Mint 21.3

为何热衷于搞发行版的多,搞应用程序开发的少?Linux最多余的就是各种发行版,最缺的就是应用程序,特别是行业应用程序。
mainmaster
帖子: 2
注册时间: 2022-01-21 8:36
系统: win10

Re: 在shell脚本中杀死进程

#7

帖子 mainmaster » 2022-01-21 11:09

cat killme.sh
#!/bin/bash
echo $1
ps -ef | grep $1 | awk '{printf "%s ",$2}' | xargs kill -9
回复