$ journalctl -u <unit> -f
unit은 systemctl list-units
했을 때 나오는 unit이다. 예를 들면,
$ journalctl -u besu.service -f
$ journalctl -u <unit> -f
unit은 systemctl list-units
했을 때 나오는 unit이다. 예를 들면,
$ journalctl -u besu.service -f
ethers.js v5 기준
const contract = await ethers.getContractAt("DasomOLIContract", contract_address);
// DasomEvent(type arg1, ...)
const filter = contract.filters.DasomEvent();
const currentBlock = await ethers.provider.getBlockNumber();
const fromBlock = currentBlock - 86400;
const events = await ethers.provider.getLogs({
...filter,
fromBlock: fromBlock,
toBlock: currentBlock,
});
if (events.length > 0) {
events.forEach((event: Log) => {
console.log(`Dasom event found in block ${event.blockNumber}:`);
console.log(`Transaction Hash: ${event.transactionHash}`);
console.log(`Transaction data: ${event.data}`);
const parsedLog = contract.interface.parseLog(event);
const args = parsedLog.args;
const arg1 = args.arg1;
console.log(`Log Data:`, parsedLog.args);
console.log('--------------------------');
});
}
logrotate를 사용하면 /var/log 아래에 gzip된 로그 파일(.gz)들이 남는다.
로그 파일을 보고 싶을 때 압축을 풀어서 봐도 되지만, 압축을 풀지 않고 다룰 수 있는 명령어들이 있다.
zless log.gz 이면 로그 파일 보는데 큰 문제 없을 거다.
zcat으로 | 하여 파이프를 통해 이용하는 것도 좋은 방법이다.
more는 오래된 도구로 less와의 차이는 less는 앞 쪽으로도 스크롤이 된다. more는 뒤로만 된다.
로그 남길 때 그냥 주구장창 남기면 디스크가 꽉 찬다.
/var/log 아래 남는 log 들처럼 주기적으로 gzip으로 압축하고, 오래된 로그는 저절로 지워지도록 하고 싶을 때 logrotate를 쓴다.
logrotate를 설정해서 주기마다 압축해서 남기고, 때 되면 지우도록 만들자.
아래 명령은 도움말인 man page를 보여 준다.
# man logrotate
logrotate의 설정 파일들은 아래에서 찾을 수 있다.
/etc/logrotate.conf : logrotate의 기본 설정 파일. 여기서 /etc/logrotate.d/ 아래의 파일들을 include 하도록 되어 있다.
/etc/logrotate.d/ : logrotate를 사용해서 로그를 남기고 싶은 유틸리티들이 여기다 설정 파일을 둔다.
예제를 보자.
# vi /etc/logrotate.d/mysqlmon
/var/log/mysqlmon/mysqlmon.log /var/log/mysqlmon/mysqlmon.err {
daily
missingok
rotate 7
compress
notifempty
}
위의 예제의 각 옵션은 다음과 같다.
daily: 하루 주기
missingok: 로그 파일이 없어도 에러 메시지를 쓰지 않는다.
rotate 7: 오래된 로그를 7개 남긴다.
compress: gzip으로 압축한다.
notifempty: 로그 파일이 비어 있으면 rotate하지 않는다.
다른 자세한 옵션은 man page를 참고하자.
mysql이 자꾸 죽으면서 워드프레스가 DB연결을 못하고 자꾸 에러를 띄운다.
InnoDB memory pool size가 기본으로 128M로 되어 있는데, 이걸 할당을 못하고 죽는 것 같다.
64M로 줄이자.
# vi /etc/mysql/conf.d/innodb.cnf [mysqld] innodb_buffer_pool_size = 64M
죽으면 사실 그냥 service mysql restart 해주면 되는데, 요거도 귀찮으니까 돌려서 죽으면 실행하게 스크립트를 만들자
# vi mysqlmon.sh #!/bin/bash linecount=`ps -aux | grep /usr/sbin/mysqld | wc -l` if [ "$linecount" = "2" ]; then echo "`date`: Working well" >> /var/log/mysqlmon/mysqlmon.log; else echo "`date`: Trying to recover..." >> /var/log/mysqlmon/mysqlmon.err; service mysql restart; echo "`date`: Done" >> //var/log/mysqlmon/mysqlmon.err; fi
crontab에 등록하자
# crontab -e */5 * * * * /root/mysqlmon.sh
log파일을 관리하도록 [Linux] logrotate 설정 글의 예제처럼 logrotate를 설정하자.
$ rsync -av --progress <source> <destination>
Local 로부터 local로의 sync가 아니라면 -z 옵션을 주는 것도 좋다. destination에서 source에 없는 파일은 지우고 싶다면 –delete 옵션을 준다. -h 옵션은 human readable하게 한다. –progress는 progress를 보여준다.
crontab으로 등록
# crontab -e
0 3 * * * rsync -avh --delete /mnt/NAS /media/dasomoli/Elements
나는 이렇게 한다.
#!/bin/bash
if [[ -b /dev/sda1 && -b /dev/sdb1 && -d /media/dasomoli/Elements && -d /mnt/NAS ]] \
&& ! [[ -e /media/dasomoli/Elements1 ]]; then
rsync -avh --delete /mnt/NAS /media/dasomoli/Elements >> /var/log/rsync/backup_exthdd.log;
else
echo "`date`: Error: HDDs have not mounted" >> /var/log/rsync/backup_exthdd.err;
mount >> /var/log/rsync/backup_exthdd.err;
fi
그리고 logrotate 설정을 해둔다.
# vi /etc/logrotate.d/backup_exthdd
/var/log/rsync/backup_exthdd.log /var/log/rsync/backup_exthdd.err {
weekly
missingok
rotate 5
compress
notifempty
}
1. Kernel 에서 pr_debug 등이 안나올 때,
간단히는 맨 위(“#include <linux/kernel.h>”보다 위)에 “#define DEBUG” 추가 혹은 http://www.kernel.org/doc/local/pr_debug.txt 처럼 makefile 수정
DEBUG를 추가했을 때 왜 pr_debug 가 Enable 되는지 보고 싶다면, include/linux/kernel.h 참고
커널 메시지 보기 : 커널이 어느정도 안정적이라면 UART 등을 이용하는 것보다 adb 쉘을 이용하는 것이 더 편하던데..
logcat 메시지 보기
아쉬우나마 adb logcat 을 이용해서 필터링 하고 싶다면 다음과 같이 한다.