How to create symlink for latest file only?


Login or Register to Reply

 
Thread Tools Search this Thread
# 1  
How to create symlink for latest file only?

Hello,

On Solaris 10, here are entries for logs in httpd.conf
Code:
ErrorLog "|/export/apache/apache-2.2.17/bin/rotatelogs -l -f /var/log/apache/error_log.%Y%m%d 86400"

It keeps creating daily logs with below names -
Code:
-rw-r--r--   1 root     root     1016747232 Apr  5 23:59 /var/log/apache/error_log.20190405
-rw-r--r--   1 root     root     946721391 Apr  6 23:59 /var/log/apache/error_log.20190406
-rw-r--r--   1 root     root     1092546540 Apr  7 23:59 /var/log/apache/error_log.20190407
-rw-r--r--   1 root     root     1172486303 Apr  8 23:59 /var/log/apache/error_log.20190408
-rw-r--r--   1 root     root     909466871 Apr  9 23:59 /var/log/apache/error_log.20190409
-rw-r--r--   1 root     root     916731172 Apr 10 23:59 /var/log/apache/error_log.20190410
-rw-r--r--   1 root     root     785326845 Apr 11 23:59 /var/log/apache/error_log.20190411
-rw-r--r--   1 root     root     463003111 Apr 12 13:38 /var/log/apache/error_log.20190412

I want to create a symlink 'error_log' and that should point to latest log file. One idea is, to create two cronjobs for 00:00 midnight, something like this
Code:
00 00 * * * ln -s /var/log/apache/error_log.20190412 /var/log/apache/error_log
59 00 * * * unlink /var/log/apache/error_log

But how will I tell cron, to pick only latest error_log.xxxxxx ? Is it possible ?

Thanks
This User Gave Thanks to solaris_1977 For This Post:
# 2  
Fortunately, your file names are "sort friendly". Try
Code:
ls  *log.* | sort | tail -1

This User Gave Thanks to RudiC For This Post:
# 3  
Yes, that can help. How can I pass that name to cronjob ?

Alternatively I thought of passing same syntax as mentioned in logrotate, but that fails
Code:
bash-3.2# ls -l /var/log/apache/error_log.%Y%m%d
/var/log/apache/error_log.%Y%m%d: No such file or directory
bash-3.2#

If this can work, I can pass that in cron in similar way
Code:
00 00 * * * ln -s /var/log/apache/error_log.%Y%m%d /var/log/apache/error_log
59 00 * * * unlink /var/log/apache/error_log


Last edited by solaris_1977; 04-12-2019 at 05:53 PM..
This User Gave Thanks to solaris_1977 For This Post:
# 4  
shell uses backticks and $( ) to turn program output into strings.

Code:
cd /var/log ; ln -s $(ls  *error_log.* | sort | tail -1) error_log

These 2 Users Gave Thanks to Corona688 For This Post:
# 6  
I'd not bother with the sort. The output should be lexically ordered anyway, so it's redundant.

In some OS, you might need to add a -f to get it to replace the sym-link, and of course you need permission to write to the directory (which root will have, naturally)




Robin
# 7  
Quote:
Originally Posted by Corona688
shell uses backticks and $( ) to turn program output into strings.

Code:
cd /var/log ; ln -s $(ls  *error_log.* | sort | tail -1) error_log

Quote:
Originally Posted by rbatte1
I'd not bother with the sort. The output should be lexically ordered anyway, so it's redundant.

I would also be inclined to use the reverse-sort option to ls, and head instead of tail, thus:
Code:
cd /var/log ; ln -s $(ls -r  *error_log.*  | head -1) error_log

Andrew
Login or Register to Reply

|
Thread Tools Search this Thread
Search this Thread:
Advanced Search

More UNIX and Linux Forum Topics You Might Find Helpful
Tomcat 6.0 fails to read symlink(symbolic link) file
KingaKoopa
Hello all experts, Im in a situation where Tomcat simply does not want to read this file through the symlink.... I checked permissions..OK Also checked file & tomcat owner...all OK. This is what I have my /tomcat/conf/Catalina/local/appname.xml <Context> <Resource name="jdbc/black" ...... UNIX and Linux Applications
3
UNIX and Linux Applications
create t a filelist with the latest file by YYYYMMDD and move to subfolder
kedrick
Hi all, I am receiving files named like: ABC_20120730.csv ABC_20120801.csv ABC_20120812.csv They are residing in a folder named Incoming. I am supposed to write a script that will create a filelist which will contain only the name of the latest file beginning with ABC_, by YYYYMMDD...... Shell Programming and Scripting
3
Shell Programming and Scripting
File count for symlink using find command
dixits
Hi Guys, The script which I am using works really good for finding the file count for files that are not symlink. I know I can use find command like: find . -type l | wc -l This way I can get filecount of the symlink but is there a one liner to use -type l and -type f option ? That is...... Shell Programming and Scripting
4
Shell Programming and Scripting
ln -s creates symlink in symlink, if [ -f ... ] says file that exists doesn't exist
Xaymar
Hi Forums, I got a little problem, I made a few modifications to the code of the launch script of a testing server(minecraft) and now updating is broken aswell as the automatic directory creation. These Lines somehow create an endless symlink that refers to itself and I don't know how to fix...... Shell Programming and Scripting
0
Shell Programming and Scripting
symlink on link file
raghu.iv85
Hi all, I want to create a symlink on a link file, i mean, there is a file which is actually a symlink of some version. Now i want to create one more symlink on that link file. EX: there is a file: uat -> version prod -> version Now i want to create one more link on these 'uat' and...... Solaris
1
Solaris