首页 > 经验记录 > 操作系统

本来遇到了很奇怪的坑,crontab定时任务执行的shell脚本和自己手动执行的shell脚本不一致。

在java进程已启动的情况下, crontab定时任务执行的脚本却总是找不到对应的pid。

试了好几种解决方法,结果还是不行。

全部命令都用绝对路径执行啊,环境导入啊之类的,都试了下,没有作用,后来自己用crontab里写的定时任务试了试,出现了很多很奇怪的东西

后来还是在 grep “进程名”  之前加了个grep java  才解决的

 

crontab的定时任务如下: 

 

 

shell脚本如下:

 

都写了注释,应该可以说是很清晰了。

核心逻辑就是查询指定的进程id,若是有则无事发生,若是没有 则执行另一个启动脚本将服务启动。期间伴随日志打印到特定文件中。

 

定时任务则是每十分钟启动一次,这个cron表达式在SpringBoot的定时任务里也有实现,就不说了。

这样子定时任务运行起来其实是没有问题的,但是还不能满足需求。

 

试想这么一个场景:

刚刚关闭掉这个服务器,还在上传文件/部署/设置参数 的过程中,此时时间刚好到那个定时任务启动的时间了,他这定时任务又给你把服务给启动起来了,那岂不是很尴尬。

而且定时任务又不是想停就停,linux的定时任务要停只能执行 crontab -e 然后手动修改文件才可以。

 

这个时候我灵光一闪,既然定时任务停不了,那我让你执行命令无法成功不就完事了

于是我在启动服务的脚本和关闭服务的脚本中加入了如下代码:

 

在我手动关闭服务器时,关闭脚本会将定时任务试图执行的moniter.sh 文件名字给改了,这时候定时任务无法找到对应脚本则无法执行相应命令。

然后在我手动启动时,再给他改回去,让定时任务可以找到对应脚本。

 

最终实现效果果然如我所料一般完美,要是服务宕机,自然不是我手动关闭的,那么由于文件名没有被修改掉所以定时任务可以定时执行检测脚本,之后服务就会被重启。

那在维护时我手动进行的服务停止则会带动定时任务的停止,不用担心他自个偷偷摸摸的启动了。

整体实现效果非常满意。

 

阅读全文

1.文件的操作命令(增删改查)

(1)文件的创建(增)

命令:touch 文件名称  —– 空文件

 

(2)文件的查看(查)

命令:cat/more/less/tail 文件

可以用pageup和pagedown+shift切换页数

 

使用cat查看文件,只能显示最后一屏内容

使用tail -10 查看文件的后10行,Ctrl+C结束

用more查看文件,可以显示百分比,回车可以向下一行, 空格可以向下一页,q可以退出查看

使用less查看文件,q结束查看

命令 tail -f 文件 可以对某个文件进行动态监控,例如tomcat的日志文件,  会随着程序的运行,日志会变化,可以使用tail -f 文件名 监控文 件的变化

 

(3)修改文件的内容(改)

命令:vim 文件

但此时并不能编辑,因为此时处于命令模式,点击键盘i/a/o进入编辑模式,可以编辑文件,编辑完成后,按下Esc,退回命令模式

此时文件虽然已经编辑完成,但是没有保存,需输入冒号:进入底行模式,在底行模式下输入wq代表写入内容并退出,即保存;输入q!代表强制退出不保存。

 

关于vim使用过程:

在实际开发中,使用vim编辑器主要作用就是修改配置文件

vim 文件——>进入文件—–>命令模式——>按i进入编辑模式—–>编辑文件     ——->按Esc进入底行模式—–>输入:wq/q!

 

(4)删除就rm-rf就是了

 

 

2.压缩文件的操作命令

(1)打包并压缩文件

Linux中的打包文件一般是以.tar结尾的,压缩的命令一般是以.gz结尾的。

而一般情况下打包和压缩是一起进行的,打包并压缩后的文件的后缀名一般.tar.gz。

命令:tar -zcvf 打包压缩后的文件名 要打包压缩的文件

其中:z:调用gzip压缩命令进行压缩

c:打包文件

v:显示运行过程

f:指定文件名

比如:

打包并压缩/test下的所有文件 压缩后的压缩包指定名称为xxx.tar.gz

tar -zcvf xxx.tar.gz aaa.txt bbb.txt ccc.txt

或:tar -zcvf xxx.tar.gz /test/*

 

(1)解压压缩包(重点)

命令:tar [-xvf] 压缩文件

其中:x:代表解压

比如:将/test下的xxx.tar.gz解压到当前目录下

tar -xvf xxx.tar.gz

 

将/test下的xxx.tar.gz解压到根目录/usr下

tar -xvf xxx.tar.gz -C /usr——C代表指定解压的位置

 

3.其他命令

(1)显示当前所在位置

pwd

 

(2)搜索命令

命令:grep 要搜索的字符串 要搜索的文件

比如:搜索/usr/sudu.conf文件中包含字符串to的行

grep to /usr/sudu.conf

 

(3)管道命令

命令:|   将前一个命令的输出作为本次目录的输入

示例:查看当前系统中所有的进程中包括system字符串的进程

ps ef | grep system

 

(4)查看进程

命令:ps -ef

查看当前系统中运行的进程

 

(5)杀死进程

命令:kill -9 进程的pid

 

(6)网络通信命令

查看当前系统的网卡信息:ifconfig

查看与某台机器的连接情况:ping

查看当前系统的端口使用:netstat -an

 

4.Linux的权限命令

权限是Linux中的重要概念,每个文件/目录等都具有权限,通过ls -l命令我们可以 查看某个目录下的文件或目录的权限

文件的类型:

d:代表目录

-:代表文件

l:代表链接(可以认为是window中的快捷方式)

后面的9位分为3组,每3位置一组,分别代表属主的权限,与当前用户同组的     用户的权限,其他用户的权限

r:代表权限是可读,r也可以用数字4表示

w:代表权限是可写,w也可以用数字2表示

x:代表权限是可执行,x也可以用数字1表示

 

修改文件/目录的权限的命令:chmod

示例:修改/test下的aaa.txt的权限为属主有全部权限,属主所在的组有读写权限,

其他用户只有读的权限

chmod u=rwx,g=rw,o=r aaa.txt

还可以使用数字表示:

chmod 764 aaa.txt

 

 

 

阅读全文

为了能在网络上部署自己的项目

学!

看了下视频,不难,基本操作+部署,应该短时间内能学完。

 

 


 

 

1.目录切换命令

cd usr        切换到该目录下usr目录

cd ../          切换到上一层目录

cd /           切换到系统根目录

cd ~          切换到用户主目录

cd –           切换到上一个所在目录

 

2.目录的操作命令(增删改查)

(1)增加目录操作(增)

命令:mkdir 目录名称

在根目录 / 下 mkdir test,就会在根目录 / 下产生一个test根目录

 

(2)查看目录(查)

命令:ls [-al] 父目录

在根目录 / 下使用ls,可以看到该目录下的所有的目录和文件

在根目录 / 下使用ls -a,可以看到该目录下的所有文件和目录,包括隐藏的

在根目录 / 下使用ls -l,可以看到该目录下的所有目录和文件的详细信息

注意:ls -l 可以缩写成ll

 

(3)寻找目录(查)

命令:find 目录 参数

示例:查找/root下的与test相关的目录(文件)  find /root -name ‘test*’

 

(4)修改目录的名称(改)

命令:mv 目录名称 新目录名称

假设test目录下有一个233目录,使用mv 233 666命令修改,233名字就变为666了

mv的语法不仅可以对目录进行重命名而且也可以对各种文件,压缩包等进行    重命名的操作

 

(5)移动目录的位置—剪切(改)

命令:mv 目录名称 目录的新位置

示例:在test下将666目录剪切到 /usr下面,使用mv 666 /usr

mv语法不仅可以对目录进行剪切操作,对文件和压缩包等都可执行剪切操作

 

(6)拷贝目录(改)

命令:cp -r 目录名称 目录拷贝的目标位置 —–r代表递归拷贝

将/test下的666拷贝到根目录下 使用cp -r 666 /

cp命令不仅可以拷贝目录还可以拷贝文件,压缩包等,拷贝文件和压缩包时不  用写-r递归

 

(7)删除目录(删)

命令:rm [-rf] 目录(著名的从删库到跑路就是用这个实现的)

删除/下的666,进入/下使用rm -r 666,但是这样会一直让你输入y确定,就很烦

删除/下的666而不需要询问强制删除,在/下使用rm -rf 666

 

 

 

阅读全文
EA PLAYER &

历史记录 [ 注意:部分数据仅限于当前浏览器 ]清空

      00:00/00:00