저는 임베디드 Linux(Dreadnaught)를 실행하고 있으며 사용자가 로그인할 때 시스템 로그에 한 줄을 수동으로 입력하고 다른 명령의 결과를 시스템 로그에 저장할 수 있기를 원합니다. 예를 들어:
echo ======== Setting chat and Options for Insys >>/var/log/messages
cat /etc/ppp/options >> /var/log/messages
Syslog는 /etc/inittab에서 시작됩니다.
::respawn:/sbin/syslogd -n -s 200 -b 2 -S -m0
일반적인 작업을 수행하기 위한 몇 가지 별칭이 있고 런타임에 syslog를 업데이트하고 싶습니다.
alias Insys='echo =================== Setting chat and Options for Insys >> /var/log/messages; cp /var/config/tw_con_Insys.lge /var/config/tw_con.lge; cp /etc/ppp/peers/tw_options_Insys /etc/ppp/peers/tw_options; con; echo =================== Complete >> /var/log/messages'
alias setup='echo =================== options ===================; echo ""; echo ""; cat /etc/ppp/options; echo ""; echo ""; echo =================== chat ===================; echo ""; echo ""; cat /var/config/tw_con.lge; echo ""; echo ============================================;'
setup 명령은 터미널에 기록하고 시스템 로그(예: setup>>/var/log/messages)에 기록하고 싶습니다.
문제는 /var/log/messages가 사용자가 아닌 루트에 속한다는 것입니다. 수동으로 실행할 수 있습니다
su -c 'chmod 777 /var/log/messages'
, 루트 비밀번호를 입력하라는 메시지가 표시되면 바로가기를 실행할 수 있고 작동합니다. 그러나 로그가 message.0으로 이동하고 새 메시지가 생성될 때마다 권한을 잃고 다시 실행해야 합니다.
사용자 정의 스크립트를 실행하기 전에 실행할 수 있도록 이 chmod에 대한 별칭을 만들어 보았습니다.
alias userlog='su -c ''chmod 777 /var/log/messages'''
별칭이 허용되지만 실행되지 않습니다.
[user@Dreadnaught_TEP1 etc]$ userlog
su: unknown user 777
당신의 도움을 주셔서 감사합니다!
답변1
문제를 해결해 주신 @MarkPlotnick에게 감사드립니다! 이것기록계이 명령은 내가 필요한 작업을 수행하며 chmod 또는 이와 유사한 것이 필요하지 않습니다.
alias Insys='logger =================== Setting chat and Options for Insys ; cp /var/config/tw_con_Insys.lge /var/config/tw_con.lge; cp /etc/ppp/peers/tw_options_Insys /etc/ppp/peers/tw_options; con; logger =================== Complete; setup '
alias setup='logger =================== options ===================; cat /etc/ppp/options | logger; logger =================== chat ===================; cat /var/config/tw_con.lge | logger; logger ============================================'