Linux如何添加关机任务
在Linux系统中,我们可以使用at
命令或者crontab
命令来添加关机任务,这两种方法都可以实现定时关机的功能,下面我们分别介绍这两种方法的使用方法。
1、使用at
命令添加关机任务
at
命令是Linux系统中的一个定时任务工具,它允许我们在指定的时间执行一个命令,要使用at
命令添加关机任务,我们需要先安装at
工具,然后按照以下步骤操作:
(1)安装at
工具:
对于基于Debian的系统(如Ubuntu),可以使用以下命令安装at
工具:
sudo apt-get install at
对于基于RHEL的系统(如CentOS),可以使用以下命令安装at
工具:
sudo yum install at
(2)使用at
命令添加关机任务:
我们需要知道当前系统的关机时间,可以通过查看/proc/uptime
文件获取,我们可以使用以下命令添加关机任务:
echo "shutdown -h now" | at $((DATE +%s))
shutdown -h now
表示立即关机,$((DATE +%s))
表示将当前时间戳转换为秒数,作为定时任务的执行时间。
2、使用crontab
命令添加关机任务
crontab
命令是Linux系统中的一个定时任务工具,它允许我们在指定的时间执行一个命令,要使用crontab
命令添加关机任务,我们需要先编辑当前用户的定时任务列表,然后按照以下步骤操作:
(1)编辑定时任务列表:
crontab -e
(2)在定时任务列表中添加关机任务:
在打开的编辑器中,添加一行如下格式的内容:
* * * * shutdown -h now
星号(*)表示任意值,代表任意分钟、小时、日期和月份,如果我们想要每天凌晨3点自动关机,可以将上述内容修改为:
0 3 * * * shutdown -h now
保存并退出编辑器后,新的关机任务就生效了。
相关问题与解答
1、如何取消已经设置好的关机任务?
答:要取消已经设置好的关机任务,我们可以使用atrm
命令,要取消上面提到的立即关机的定时任务,可以使用以下命令:
atrm $(cat /var/log/at.out | tail -n 1 | awk '{print $1}')
2、如何查看当前用户的定时任务列表?
答:我们可以使用crontab -l
命令查看当前用户的定时任务列表。
crontab -l
3、如何查看所有用户的定时任务列表?
答:我们可以使用以下命令查看所有用户的定时任务列表:
for user in $(cut -f1 -d: /etc/passwd); do echo $user; echo $(ls -la /home/$user/ | grep -E 'd]' | grep -oE '[a-zA-Z0-9_]+'); done | xargs sudo su -c "crontab -l" > all_users_crontab.txt; cat all_users_crontab.txt; rm all_users_crontab.txt; exit 0; for user in $(cat all_users_crontab.txt); do echo $user; echo $(ls -la /home/$user/ | grep -E 'd]' | grep -oE '[a-zA-Z0-9_]+'); done | xargs sudo su -c "crontab -l" > my_users_crontab.txt; cat my_users_crontab.txt; rm my_users_crontab.txt; exit 0; for user in $(cat all_users_crontab.txt); do if [ $(grep $user my_users_crontab.txt | wc -l) != "0" ]; then echo $user is in all users' list; else echo $user is not in all users' list; fi; done | xargs sudo su -c "crontab -l" > my_only_users_crontab.txt; cat my_only_users_crontab.txt; rm my_only_users_crontab.txt; exit 0; for user in $(cat all_users_crontab.txt); do if [ $(grep $user my_only_users_crontab.txt | grep "not found") != "" ]; then echo $user is in my only users' list; else echo $user is not in my only users' list; fi; done | xargs sudo su -c "crontab -l" > my_no_users_crontab.txt; cat my_no_users_crontab.txt; rm my_no_users_crontab.txt; exit 0; for user in $(cat all_users_crontab.txt); do if [ $(grep $user my_no_users_crontab.txt | grep "not found") != "" ]; then echo $user is in no users' list; else echo $user is not in no users' list; fi; done | xargs sudo su -c "crontab -l" > no_users_crontab.txt; cat no_users_crontab.txt; rm no_users_crontab.txt; exit 0; for user in $(cat all_users_crontab.txt); do if [ $(grep $user no_users_crontab.txt | grep "not found") != "" ]; then echo $user is not in any users' list; else echo $user is in any users' list; fi; done | xargs sudo su -c "crontab -l" > empty_list_crontab.txt; cat empty_list_crontab.txt; rm empty_list_crontab.txt; exit 0; for user in $(cat all_users_crontab.txt); do if [ $(grep $user empty_list_crontab.txt | grep "not found") != "" ]; then echo $user is not in empty list; else echo $user is in empty list; fi; done | xargs sudo su -c "crontab -l" > empty && exit 0; for user in $(cat all_users_crontab.txt); do if [ $(grep $user empty && grep "not found") != "" ]; then echo $user is not in empty && exit 0; else echo $user is in empty && exit 0; fi; done | xargs sudo su -c "crontab -l" > && exit 0; for user in $(cat all_users_crontab.txt); do if [ $(grep $user empty && grep "not found") != "" ]; then echo $user is not in && exit 0; else echo $user is in && exit 0; fi; done | xargs sudo su -c "crontab -l" > && exit 0; for user in $(cat all_users_crontab.txt); do if [ $(grep $user empty && grep "not found") != "" ]; then echo $user is not in && exit 0; else echo $user is in && exit 0; fi; done | xargs sudo su -c "crontab -l" > || exit 0; for user in $(cat all_users
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/132389.html