max*_*max 10 linux filesystems centos incron
亚历克斯回答这里是我的步骤:
创建shell代码
root@ip[/]# touch mylog.sh
root@ip[/]# nano mylog.sh
Run Code Online (Sandbox Code Playgroud)
复制mylog.sh中的代码
#!/bin/bash
echo "File $1 created." >> /mylog.log
Run Code Online (Sandbox Code Playgroud)
允许
root@ip[/]# chmod +x mylog.sh
Run Code Online (Sandbox Code Playgroud)
创建日志文件
root@ip[/]# touch mylog.log
Run Code Online (Sandbox Code Playgroud)
打开icron表
incrontab -e
Run Code Online (Sandbox Code Playgroud)
把新命令放入
/test/ IN_CREATE mylog.sh $@$#
Run Code Online (Sandbox Code Playgroud)
重新加载incron - 创建一个新文件 - 检查日志文件
root@ip[/]# incrontab --reload
requesting table reload for user 'root'...
request done
root@ip[/]# cd test
root@ip[/test]# touch newfile.txt
root@ip[/test]# cd /
root@ip[/]# nano mylog.log
Run Code Online (Sandbox Code Playgroud)
但仍然是空的日志文件...我错过了什么?
最后用完整路径调用shell脚本就可以了:
/test/ IN_CREATE /mylog.sh $@$#
Run Code Online (Sandbox Code Playgroud)
您通常可以在/var/log/messages中找到 incron 日志
如果要将事件记录到特定文件,可以使用:
/test/ IN_CREATE mylog.sh $@$#
Run Code Online (Sandbox Code Playgroud)
其中 mylog.sh 是处理日志记录的 shell 脚本。
#!/bin/bash
echo "File $1 created." >> /home/myuser/filescreated.log
Run Code Online (Sandbox Code Playgroud)
不要忘记通过 chmod +x mylog.sh 授予此 shell 脚本执行权限
说明:一旦开始使用所调用命令的参数,就必须将其全部放入 shell 脚本中。由于 incron 不会将参数传递给您的命令,而是将其解释为自身的参数。
更改 incrontab 后不要忘记调用 incrontab --reload 。
incrontab -e
/text/ IN_CREATE /home/myuser/mylog.sh $@ $#
Run Code Online (Sandbox Code Playgroud)
日志文件
#!/bin/bash
echo "$(date) File $2 in $1 created." >> /home/myuser/log.txt
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1340 次 |
最近记录: |