Linux Cron Job Examples

by XDK 27. September 2019 22:38

Crontab Commands
export EDITOR=vi ;to specify a editor to open crontab file.
crontab -e Edit crontab file, or create one if it doesn’t already exist.
crontab -l crontab list of cronjobs , display crontab file contents.
crontab -r Remove your crontab file.
crontab -v Display the last time you edited your crontab file. (This option is only available on a few systems.)

Linux Crontab Format
MIN HOUR DOM MON DOW CMD

Schedule a cron to execute at 2am daily.
This will be useful for scheduling database backup on a daily basis.
0 2 * * * CMD
Asterisk (*) is used for matching all the records.

Schedule a cron to execute twice a day.
Below example command will execute at 5 AM and 5 PM daily. You can specify multiple time stamp by comma separated.
0 5,17 * * * CMD

Schedule a cron to execute on every minutes.
Generally, we don’t require any script to execute on every minute but in some case, you may need to configure it.
* * * * * CMD

Schedule a cron to execute on every Sunday at 5 PM.
This type of cron is useful for doing weekly tasks, like log rotation, etc.
0 17 * * sun CMD

Schedule a cron to execute on every 10 minutes.
If you want to run your script on 10 minutes interval, can configure like below. These type of crons are useful for monitoring.
*/10 * * * * /scripts/monitor.sh
*/10: means to run on every 10 minutes. Same as if you want to execute on every 5 minutes use */5.

Schedule a cron to execute on selected months.
Sometimes we required scheduling a task to be executed for selected months only. Below example script will run in January, May and August months.
* * * jan,may,aug * /script/script.sh

Schedule a cron to execute on selected days.
If you required scheduling a task to be executed for selected days only. Below example will run on each Sunday and Friday at 5 PM.
0 17 * * sun,fri /script/script.sh

Schedule a cron to execute on first sunday of every month.
To schedule a script to execute a script on first Sunday only is not possible by time parameter, But we can use the condition in command fields to do it.
0 2 * * sun [ $(date +%d) -le 07 ] && /script/script.sh

Schedule a cron to execute on every four hours.
If you want to run a script on 4 hours interval. It can be configured like below.
0 */4 * * * CMD

Schedule a cron to execute twice on every Sunday and Monday.
To schedule a task to execute twice on Sunday and Monday only. Use the following settings to do it.
0 4,17 * * sun,mon CMD

Schedule a cron to execute on every 30 Seconds.
To schedule a task to execute on every 30 seconds is not possible by time parameters, But it can be done by schedule same cron twice like below.
* * * * * CMD
* * * * * sleep 30; CMD

Schedule a multiple tasks in single cron.
To configure multiple tasks with single cron, Can be done by separating tasks by the semicolon ( ; ).
* * * * * CMD; /scripts/scrit2.sh

Schedule tasks to execute on yearly ( @yearly ).
@yearly timestamp is similar to “0 0 1 1 *”. It will execute task on the first minute of every year.
@yearly CMD

Schedule tasks to execute on monthly ( @monthly ).
@monthly timestamp is similar to “0 0 1 * *”. It will execute a task in the first minute of the month.
@monthly CMD

Schedule tasks to execute on Weekly ( @weekly ).
@weekly timestamp is similar to “0 0 1 * mon”. It will execute a task in the first minute of the week.
@weekly /bin/script.sh

Schedule tasks to execute on daily ( @daily ).
@daily timestamp is similar to “0 0 * * *”. It will execute a task in the first minute of every day.
@daily CMD

Schedule tasks to execute on hourly ( @hourly ).
@hourly timestamp is similar to “0 * * * *”. It will execute a task in the first minute of every hour.
@hourly CMD

Schedule tasks to execute on system reboot ( @reboot ).
@reboot is useful for those tasks which you want to run on your system startup. It is useful for starting tasks in the background automatically.
@reboot CMD

Tags: , ,

Linux

The username you provided is not allowed to use the text-based Tomcat Manager (error 403)

by XDK 26. September 2019 23:54

Exception:

The username you provided is not allowed to use the text-based Tomcat Manager (error 403)

Solution:

Configure tomcat to allow deployment from other source

$ sudo nano ./apache-tomcat-8.5.46/webapps/manager/META-INF/context.xml
<!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> -->
$ ./apache-tomcat-8.5.46/bin/shutdown.sh
$ ./apache-tomcat-8.5.46/bin/startup.sh

Tags:

JAVA | Tomcat

ERROR: No Java executable found in current PATH: /bin:/usr/bin:/sbin:/usr/sbin

by XDK 26. September 2019 23:43

Exception:

Job for jenkins.service failed because the control process exited with error code.
See "systemctl status jenkins.service" and "journalctl -xe" for details.
invoke-rc.d: initscript jenkins, action "start" failed.
‚óŹ jenkins.service - LSB: Start Jenkins at boot time
Loaded: loaded (/etc/init.d/jenkins; generated)
Active: failed (Result: exit-code) since Thu 2019-09-26 14:35:12 UTC; 13ms ago
Docs: man:systemd-sysv-generator(8)
Process: 14063 ExecStart=/etc/init.d/jenkins start (code=exited, status=1/FAILURE)
Sep 26 14:35:12 ip-172-31-45-94 systemd[1]: Starting LSB: Start Jenkins at boot time...
Sep 26 14:35:12 ip-172-31-45-94 jenkins[14063]: ERROR: No Java executable found in current PATH: /bin:/usr/bin:/sbin:/usr/sbin
Sep 26 14:35:12 ip-172-31-45-94 jenkins[14063]: If you actually have java installed on the system make sure the executable is in the aforementioned path and that 'type -p java' returns the java executable path
Sep 26 14:35:12 ip-172-31-45-94 systemd[1]: jenkins.service: Control process exited, code=exited status=1
Sep 26 14:35:12 ip-172-31-45-94 systemd[1]: jenkins.service: Failed with result 'exit-code'.
Sep 26 14:35:12 ip-172-31-45-94 systemd[1]: Failed to start LSB: Start Jenkins at boot time.
dpkg: error processing package jenkins (--configure):
installed jenkins package post-installation script subprocess returned error exit status 1
Processing triggers for ureadahead (0.100.0-21) ...
Processing triggers for systemd (237-3ubuntu10.24) ...
Errors were encountered while processing:
jenkins
E: Sub-process /usr/bin/dpkg returned an error code (1)

Solution:

Update JAVA path for Jenkins

ubuntu@ip-172-31-45-94:~/bin$ sudo nano /etc/init.d/jenkins
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/home/ubuntu/bin/jdk1.8.0_221/bin

ubuntu@ip-172-31-45-94:~/bin$ sudo systemctl daemon-reload
ubuntu@ip-172-31-45-94:~/bin$ sudo service jenkins start
ubuntu@ip-172-31-45-94:~/bin$ sudo service jenkins status
jenkins.service - LSB: Start Jenkins at boot time
Loaded: loaded (/etc/init.d/jenkins; generated)
Active: active (exited) since Thu 2019-09-26 14:42:40 UTC; 1min 53s ago
Docs: man:systemd-sysv-generator(8)
Process: 14221 ExecStart=/etc/init.d/jenkins start (code=exited, status=0/SUCCESS)
Sep 26 14:42:39 ip-172-31-45-94 systemd[1]: Starting LSB: Start Jenkins at boot time...
Sep 26 14:42:39 ip-172-31-45-94 jenkins[14221]: Correct java version found
Sep 26 14:42:39 ip-172-31-45-94 jenkins[14221]: * Starting Jenkins Automation Server jenkins
Sep 26 14:42:39 ip-172-31-45-94 su[14267]: Successful su for jenkins by root
Sep 26 14:42:39 ip-172-31-45-94 su[14267]: + ??? root:jenkins
Sep 26 14:42:39 ip-172-31-45-94 su[14267]: pam_unix(su:session): session opened for user jenkins by (uid=0)
Sep 26 14:42:39 ip-172-31-45-94 su[14267]: pam_unix(su:session): session closed for user jenkins
Sep 26 14:42:40 ip-172-31-45-94 jenkins[14221]: ...done.
Sep 26 14:42:40 ip-172-31-45-94 systemd[1]: Started LSB: Start Jenkins at boot time.

Tags:

JAVA | Jenkins

Setup and Configure Master-Slaves Architecture in Jenkins

by XDK 26. September 2019 23:05

 

 

 

 

Setup Auto SSH Login

SSH to Jenkins Master
    $ sudo -iu jenkins
Generate Public & Private RSA Key.
    $ ssh-keygen -t rsa
       public key location : /var/lib/jenkins/.ssh/id_rsa.pub
       private key location : /var/lib/jenkins/.ssh/id_rsa
Create .ssh directory on Jenkins Slave 1 from Jenkins Master
    $ ssh -i /home/ubuntu/bin/myaccountkey.pem ubuntu@3.91.65.12 mkdir -p .ssh
Attach master public key with slave authorized directory
    $ cat .ssh/id_rsa.pub | ssh -i /home/ubuntu/bin/myaccountkey.pem ubuntu@3.91.65.12 'cat >> .ssh/authorized_keys'
Verify connection
    $ ssh ubuntu@3.91.65.12
Create .ssh directory on Jenkins Slave 2 from Jenkins Master
    $ ssh -i /home/ubuntu/bin/myaccountkey.pem ubuntu@3.95.20.115 mkdir -p .ssh
Attach master public key with slave authorized directory
    $ cat .ssh/id_rsa.pub | ssh -i /home/ubuntu/bin/myaccountkey.pem ubuntu@3.95.20.115 'cat >> .ssh/authorized_keys'

Download Jenkins Slave 1 Agent Program on Jenkins Slave 1 Machine

SSH to Jenkins Slave 1
Create bin directory.
    $ mkdir ~/bin
Goto bin and download slave.jar from master
    $ cd bin 
    $ wget http://54.81.205.161:8080/jnlpJars/slave.jar

Add Jenkins Slave 1 Machine to Jenkins Master
Login to Jenkins site

 

Launch Command
    ssh ubuntu@3.91.65.12 java -jar ./bin/slave.jar

Download Jenkins Slave 2 Agent Program on Jenkins Slave 2 Machine

SSH to Jenkins Slave 2
Create bin directory.
    $ mkdir ~/bin
Goto bin and download slave.jar from master
    $ cd bin 
    $ wget http://54.81.205.161:8080/jnlpJars/slave.jar

Add Jenkins Slave 2 Machine to Jenkins Master
Login to Jenkins site

Launch Command
    $ ssh ubuntu@3.95.20.115 java -jar ./bin/slave.jar

Tags: , ,

Amazon Web Service | Jenkins

Config files In Tomcat

by XDK 26. September 2019 22:53

tomcat/conf/server.xml, controls tomcat server-level stuff, like ports
tomcat/conf/tomcat-users.xml, edit to insert users for tomcat manager app
tomcat/webapps/_webappname_/WEB-INF/web.xml, webapp-internal configs for a specific webapp
tomcat/conf/Catalina/localhost/_webappname_.xml, server-level configs for a specific webapp auto-created when tomcat is started
tomcat/conf/context.xml, default values for server-level webapp configs, seldom changed, overridden by webapp-specific context xml file
tomcat/conf/web.xml, default values for webapp configs, seldom changed, overridden by webapp-specific web.xml file
tomcat/conf/logging.properties, controls tomcat logging details, seldom changed
tomcat/conf/catalina.properties, tomcat internal classloader configs, don't mess with it.
tomcat/conf/catalina.policy, tomcat internal security policy, don't mess with it.

Tags:

About the author

My name is Xavier Dilip Kumar Jayaraj having 13+ years of IT experience which includes solid experience and depth Knowledge in Application Life Cycle Management, Configuration Management, Implementation and Support using TFS on-premises and Azure DevOps. I have invested in gaining DevOps knowledege to expertise with Cloud Computing providers namely Microsoft Azure and Amazon Web Services in recent years. I am very positive to learn and adapt emerging technologies to client’s environment.

Microsoft Certified: Azure Administrator Associate

Microsoft Certified: Azure DevOps Engineer Expert

DevOps Engineer Certificate Program | Transcript 

OTP-AWSD5: AWS IoT: Developing and Deploying an Internet of Things

[PCEP-30-01] PCEP – Certified Entry-Level Python Programmer

Quotes I Like

"Failure will never overtake me if my determination to succeed is strong enough."  - Dr. APJ. Abdul Kalam

"Always be yourself, express yourself, have faith in yourself, do not go out and look for a successful personality and duplicate it." - Bruce Lee

"Technology is just a tool. In terms of getting the kids working together and motivating them, the teacher is the most important." - Bill Gates

"Innovation distinguishes between a leader and a follower." - Steve Jobs

CategoryList

Disclaimer

The information provided here is based on my expreriences, troubleshooting and online/offline findings. It can be used as is on your own risk without any warranties and I impose no rights.