ps:
说明:centos 7的systemctl功能感觉越来越多,单独整理一篇文章好了,仅收集资料,自己学习,没有进行学术讨论的水平,见谅。
注意事项目:
1.整篇几乎很少谈到权限问题,所以有异常不妨检查下权限问题。
2.中文路径到底会不会出问题,有时候无法预知的,如非必要尽量不用中文路径,我帮朋友编译了5个软件也仅仅遇到一个异常,显示为编码xxx error。
3.文件名带有下划线,我已经被此问题多次坑过了,windows系统我很喜欢用,而且出现问题,提示都是莫名其妙的,类似于没有参数、未载入之类的,原因我不懂。
一、计划任务
-
建立可执行脚本
vi /home/log-time.sh #保存如下内容: #!/bin/bash cd /home&&mkdir logs time_str=$(date +%Y%m%d_%H%M%S) echo "$time_str" >> logs/"$time_str".log
-
测试脚本是否正常运行
/home/log-time.sh #执行脚本 ls /home/logs #结果如下:
20171115_201312.log
cat /home/logs/20171115_201312.log #结果如下:
20171115_201312
-
建立服务
vi /usr/lib/systemd/system/mytest.service #保存如下内容: [Unit] Description=mytest [Service] Type=simple ExecStart=/home/log_time.sh
-
测试服务是否正常运行
Systemctl start mytest.service #执行此命令 cat /home/logs/20171115_201312.log #结果如下
20171115_20131220171115_201532
-
建立定时器
vi /usr/lib/systemd/system/mytest.timer #保存如下内容: [Unit] Description=mytest [Timer] OnCalendar=*-*-* *:*:00 #左往右分别是,年月日 小时分钟秒,当前的设置相当于每分钟执行一次 Unit=mytest.service [Install] WantedBy=multi-user.target
-
启动设定
systemctl start mytest.timer #启动定时器 systemctl enable mytest.timer #开机启动定时器 tail -f /home/logs/20171115_201312.log #有兴趣可以看看,结果就不写了
二、自定义开机启动服务之挂载windows共享
-
安装硬盘兼容ntfs-3g,建立共享文件夹,根据经验不要使用中文路径,获取uid和gid。
yum install epel* #官方默认源没有ntfs-3g,必须先安装这个,建议这个源为必装源。 yum install ntfs-3g #硬盘兼容 mkdir /home/share #建立共享文件夹,注意权限 id #获取当前帐号的uid和gid避免文件夹可以挂载但是无法操作,自建帐号好像是1000开始,假如是root帐号,结果如下:
uid=0(root) gid=0(root) 组=0(root)
-
共享脚本
vi /home/share.sh #保存内容如下: #!/bin/bash if [ `df | grep share | wc -l` -eq 0 ]; then mount -t cifs -o rw,username=win帐号,password=win密码,uid=0,gid=0,file_mode=0777 //ip/共享文件夹/ /home/share #注意空格,如果空格错误,是无法挂载的也可以手动挂载一次看看命令是否可以成功 fi
-
建立服务
vi /usr/lib/systemd/system/share.service #保存内容如下: [Unit] Description=share After=network.target #网络共享当然需要网络先通对不? #Requires=network.target #根据man描述这个应该靠谱一点,但是实际情况它不行,也许我翻译错了。 [Service] Type=forking #这个地方也纠结了很久,主要是无法配合网络启动,后面发现改成这样就可以了,图形界面最简单,用ide,不过登录要卡 ExecStart=/home/share.sh [Install] WantedBy=multi-user.target
-
启动设定
systemctl enable share.service #后面那个.service可输可不输入。 systemctl start share.service