Category Archives: unix

TMUX Screen Utility for UNIX/Linux

The screen utility in Unix/linux has been replaced by the tmux utility as of Release 9. Thus, to have a persistent connection while executing system process such as installation, you will have to migrate to the new tmux utility. In this article we will show the installation of the tmux utility into a linux environment and the general use of tmux.

Installation

The tmux utility is located in the majority of OS repositories and can be retrieved using the dnf command as the root user:

[oracle@localhost test]$ su 
Password: 
[root@localhost test]# /usr/bin/dnf install tmux

[root@localhost bin]# /usr/bin/dnf install tmux
Last metadata expiration check: 0:29:38 ago on Wed 19 Mar 2025 05:23:15 PM UTC.
Dependencies resolved.
===================================================================================================================================================================================================================
 Package                                       Architecture                                    Version                                            Repository                                                  Size
===================================================================================================================================================================================================================
Installing:
 tmux                                          x86_64                                          2.7-3.el8                                          ol8_baseos_latest                                          316 k

Transaction Summary
===================================================================================================================================================================================================================
Install  1 Package

Total download size: 316 k
Installed size: 726 k
Is this ok [y/N]: y
Downloading Packages:
tmux-2.7-3.el8.x86_64.rpm                                                                                                                                                          712 kB/s | 316 kB     00:00    
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                                              698 kB/s | 316 kB     00:00     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                                                                                           1/1 
  Installing       : tmux-2.7-3.el8.x86_64                                                                                                                                                                     1/1 
  Running scriptlet: tmux-2.7-3.el8.x86_64                                                                                                                                                                     1/1 
  Verifying        : tmux-2.7-3.el8.x86_64                                                                                                                                                                     1/1 

Installed:
  tmux-2.7-3.el8.x86_64                                                                                                                                                                                            

Complete!
[root@localhost bin]# 

You can view the full usage and instruction by accessing the man page for tmux.

# usage of tmux

man tmux

To create a new tmux session simple use the new clause and -s tag to name your session

# creating tmux socket session test1

tmux new -s test1

To execute your active tmux session without closing, user Ctrl-b d

# exit active tmux socket session from within the current session

Ctrl-b d

Create an additional tmux session and exit the session.

# creating tmux socket session test2

tmux new -s test2
Ctrl-b d

To list all existing tmux sessions use the command: tmux list-sessions

# listing active tmux socket sessions

tmux list-sessions

[root@localhost bin]# tmux list-sessions
test1: 1 windows (created Wed Nov 2 15:39:47 2022) [211x58]
test2: 1 windows (created Wed Nov 2 15:41:45 2022) [211x58]
[root@localhost bin]#

To re-attach to tmux session use the command: tmux a -t test2

# attach to test2 session

tmux a -t test2

To kill a tmux session user the command: tmux kill-ses -t test2

# kill session test2

[root@localhost bin]# tmux kill-ses -t test2
[root@localhost bin]# tmux list-sessions
test1: 1 windows (created Wed Nov 2 15:39:47 2022) [211x58]
[root@localhost bin]# 

Removing all files older then X days

Log files and output files are automatically generated by applications continuesly. So you will likely have thousands after a few days or weeks of operation. There are multiple ways to remove these older files, but we will demonstrate a simple bash command of

find ./* -mtime +<days> -exec rm {} \;

# Remove files older then 30 days

find ./* -mtime +30 -exec rm {} \;
# Remove files older then 7 days

find ./* -mtime +7 -exec rm {} \;
# Remove files older then 1 hour

find ./* -mtime +1/24 -exec rm {} \;

Tagging file names in UNIX or Linux

File names can be used to identify what is in the file, the date of changes , the classification of data, or the type of data contained with in. There are times when you will have hundreds if not thousands of files contained the same type or classification of data and you want to bulk process this information. One way of accomplishing this task is through file names of a certain format. Here we will demonstrate changing all the files contained inside a single directory with an ending of ‘renamed’ where the file begins with an f.

First create a test directory and place 6 files three beginning with t and three beginning with f.

[larry@localhost ~]$ mkdir test
[larry@localhost ~]$ cd test
[larry@localhost test]$ touch t1
[larry@localhost test]$ touch t2
[larry@localhost test]$ touch t3
[larry@localhost test]$ touch f1
[larry@localhost test]$ touch f2
[larry@localhost test]$ touch f3
[larry@localhost test]$ ls 
f1  f2  f3  t1  t2  t3
[larry@localhost test]$ 

We want to change all the files starting with f to an ending of renamed. we will use the following bash command to perform this action.

find . -type f -name 'f*' -print0 | xargs --null -I{} mv {} {}_renamed
[larry@localhost test]$ find . -type f -name 'f*' -print0 | xargs --null -I{} mv {} {}_renamed
[larry@localhost test]$ ls
f1_renamed  f2_renamed  f3_renamed  t1  t2  t3
[larry@localhost test]$ 

You can now see that all files that begain with an ‘f’ now have the end of ‘renamed’

Removing Carriage Returns from file after transfer to Unix/Linux

Carriage returns will sometimes be present after cross plateform transfer of files from various operating systems. They are normally represented in UNIX and Linux as a ^M marker at the end of each line. This can cause issues in the execution of shell scripts, sql scripts and be interpreted as actual text in file. There are various methods to remove these carriage returns, but I find the easiest method is a Perl call, because there are vary few UNIX/Linux plateforms that do not support Perl natively.

To remove all carriage returns in all the files located in the present directory use:

# all files in present directory

perl -p -i -e 's/\r//g' *

To remove all carriage returns in a single file use:

# specific files 


perl -p -i -e 's/\r//g' <file_name>

OpenJDK JVM not supported while installing Oracle Fusion Middleware on Linux 7

Various software releases will sometimes have incompatibility because the two products were released or tested at about the same time. This is the cause of Oracle Fusion Middleware 12.2.1.0.0 (FMW 12c) and
Oracle Enterprise Linux 7.2 (OEL 7). FMW 12c was thoroughly tested against OEL 6, but due to its release date collision with OEL 7, there are some validation which fail checks during the install. Resulting in the
error below:

[oracle@linux1 STAGE]$ java -Djava.io.tmpdir=/u04/tmp -jar fmw_12.2.1.1.0_infrastructure.jar -silent -ignoreSysPrereqs -responseFile /u01/STAGE/fmw.rsp
Launcher log file is /u04/tmp/OraInstall2017-07-13_08-41-06AM/launcher2017-07-13_08-41-06AM.log.
Extracting the installer . . . . . . . . . . . . Done
The OpenJDK JVM is not supported on this platform.
The log is located here: /u04/tmp/OraInstall2017-07-13_08-41-06AM/launcher2017-07-13_08-41-06AM.log.
[oracle@linux1 STAGE]$

This error is a result of FMW 12c being testing against OEL 6 with JDK 1.7, but the default JDK for OEL 7 is JDK 1.8. This article outlines a procedure to resolve this error and proceed with installation
of Oracle Fusion Middleware 12.2.1.0.0 on OEL 7 or any Linux 7 distribution.

1. Logon to OEL 7 server as the root user.

[larry@linux1 ~]$ su –
Password:
Last login: Tue Jul 13 09:44:38 EDT 2017 on pts/1
[root@linux1 ~]#

2. Determine current JAVA installed with command: java -version

[root@linux2 ~]# java -version
openjdk version “1.8.0_65”
OpenJDK Runtime Environment (build 1.8.0_65-b17)
OpenJDK 64-Bit Server VM (build 25.65-b01, mixed mode)
[root@linux2 ~]#

We will install an alternative JDK for use of FMW with one we know works, in this case that JDK is 1.7.0_79.

3. Move to a directory to install the alternative JDK. In this case we will use /opt with command: cd /opt

[root@linux2 ~]# cd /opt
[root@linux2 opt]#

4. Download the JDK 1.7.0_79 with wget command: wget –no-check-certificate –no-cookies –header “Cookie: oraclelicense=accept-securebackup-cookie” “http://download.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.tar.gz” “http://download.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-i586.tar.gz”

[root@linux2 opt]# wget –no-check-certificate –no-cookies –header “Cookie: oraclelicense=accept-securebackup-cookie” “http://download.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.tar.gz”
–2017-07-14 14:14:46– http://download.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.tar.gz
Resolving download.oracle.com (download.oracle.com)… 70.186.31.18, 70.186.31.9
Connecting to download.oracle.com (download.oracle.com)|70.186.31.18|:80… connected.
HTTP request sent, awaiting response… 302 Moved Temporarily
Location: https://edelivery.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.tar.gz [following]
–2017-07-14 14:14:47– https://edelivery.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.tar.gz
Resolving edelivery.oracle.com (edelivery.oracle.com)… 104.72.8.208
Connecting to edelivery.oracle.com (edelivery.oracle.com)|104.72.8.208|:443… connected.
HTTP request sent, awaiting response… 302 Moved Temporarily
Location: https://edelivery.oracle.com/osdc-otn/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.tar.gz [following]
–2017-07-14 14:14:48– https://edelivery.oracle.com/osdc-otn/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.tar.gz
Reusing existing connection to edelivery.oracle.com:443.
HTTP request sent, awaiting response… 302 Moved Temporarily
Location: http://download.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.tar.gz?AuthParam=1473877008_9518549fbff39b6f0a026bcbd58215c9 [following]
–2017-07-14 14:14:48– http://download.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.tar.gz?AuthParam=1473877008_9518549fbff39b6f0a026bcbd58215c9
Connecting to download.oracle.com (download.oracle.com)|70.186.31.18|:80… connected.
HTTP request sent, awaiting response… 200 OK
Length: 153512879 (146M) [application/x-gzip]
Saving to: ‘jdk-7u79-linux-x64.tar.gz’

100%[===============================================================================================>] 153,512,879 4.64MB/s in 32s

2017-07-14 14:15:20 (4.58 MB/s) – ‘jdk-7u79-linux-x64.tar.gz’ saved [153512879/153512879]

[root@linux2 opt]#

5. View the downloaded JDK with ls -l command:

[root@linux2 opt]# ls -l
total 149916
drwxr-xr-x. 4 oracle dba 43 Aug 25 14:22 app
-rw-r–r–. 1 root root 153512879 Apr 13 2015 jdk-7u79-linux-x64.tar.gz
drwxr-xr-x. 2 root root 6 Mar 26 2015 rh
[root@linux2 opt]#

6. Unpack the JDK with tar command: tar xzf ./jdk-7u79-linux-x64.tar.gz

[root@linux2 opt]# tar xzf ./jdk-7u79-linux-x64.tar.gz
[root@linux2 opt]# ls
app jdk1.7.0_79 jdk-7u79-linux-x64.tar.gz rh
[root@linux2 opt]#

7. change directory to the newly created JDK directory under /opt with cd command: cd /opt/jdk1.7.0_79/

[root@linux2 opt]# cd /opt/jdk1.7.0_79/
[root@linux2 jdk1.7.0_79]#

8. Use the alternatives command to install new JDK with command:

alternatives –install /usr/bin/java java /opt/jdk1.7.0_79/bin/java 2

9. Set the newly installed JDK as local default with command: alternatives –config java

[root@linux2 jdk1.7.0_79]# alternatives –config java

There are 2 programs which provide ‘java’.

Selection Command
———————————————–
*+ 1 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64/jre/bin/java
2 /opt/jdk1.7.0_79/bin/java

Enter to keep the current selection[+], or type selection number: 2
[root@linux2 jdk1.7.0_79]#

10. Install JAR from new JDK with command: alternatives –install /usr/bin/jar jar /opt/jdk1.7.0_79/bin/jar 2

[root@linux2 jdk1.7.0_79]# alternatives –install /usr/bin/jar jar /opt/jdk1.7.0_79/bin/jar 2
[root@linux2 jdk1.7.0_79]#

11. Install javac executable from new JDK with command: alternatives –install /usr/bin/javac javac /opt/jdk1.7.0_79/bin/javac 2

[root@linux2 jdk1.7.0_79]# alternatives –install /usr/bin/javac javac /opt/jdk1.7.0_79/bin/javac 2
[root@linux2 jdk1.7.0_79]#

11. Set the new JAR as the default with command: alternatives –set jar /opt/jdk1.7.0_79/bin/jar

[root@linux2 jdk1.7.0_79]# alternatives –set jar /opt/jdk1.7.0_79/bin/jar
[root@linux2 jdk1.7.0_79]#

12. Set the new JAVAC executable as the default with command: alternatives –set javac /opt/jdk1.7.0_79/bin/javac

[root@linux2 jdk1.7.0_79]# alternatives –set javac /opt/jdk1.7.0_79/bin/javac
[root@linux2 jdk1.7.0_79]#

13. Check the default java version with command: java -version

[root@linux2 jdk1.7.0_79]# java -version
java version “1.7.0_79”
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)
[root@linux2 jdk1.7.0_79]#

14. NOTE: The Java version is now 1.7 79. Logon as the oracle software owner.

[root@linux2 STAGE]# su – oracle
Last login: Wed Jul 14 10:56:10 EDT 2017 on pts/1
[oracle@linux2 ~]$

15. Move to your FMW 12c installation directory and attempt running the installer again. The java error should be removed.

cd /u01/STAGE
java -Djava.io.tmpdir=/u04/tmp -jar fmw_12.2.1.1.0_infrastructure.jar -silent -ignoreSysPrereqs -responseFile /u01/STAGE/fmw.rsp

[root@linux2 jdk1.7.0_79]# cd /u01/STAGE
[root@linux2 STAGE]# su – oracle
Last login: Wed Jul 14 10:56:10 EDT 2017 on pts/1
[oracle@linux2 ~]$ cd /u01/STAGE
[oracle@linux2 STAGE]$ java -Djava.io.tmpdir=/u04/tmp -jar fmw_12.2.1.1.0_infrastructure.jar -silent -ignoreSysPrereqs -responseFile /u01/STAGE/fmw.rsp
Launcher log file is /u04/tmp/OraInstall2017-07-14_02-26-54PM/launcher2017-07-14_02-26-54PM.log.
Extracting the installer . . . . . . . . . . . . . . . . . . . . . . . . .java -Djava.io.tmpdir=/u04/tmp -jar fmw_12.2.1.1.0_infrastructure.jar -silent -ignoreSysPrereqs -responseFile /u01/STAGE/fmw.rsp . . . . . . . . . . . . . . . . . . Done
Checking if CPU speed is above 300 MHz. Actual 3478.990 MHz Passed
Checking swap space: must be greater than 512 MB. Actual 2047 MB Passed
Checking if this platform requires a 64-bit JVM. Actual 64 Passed (64-bit not required)
Checking temp space: must be greater than 300 MB. Actual 32284 MB Passed

Preparing to launch the Oracle Universal Installer from /u04/tmp/OraInstall2017-07-14_02-26-54PM
oraInstFile: /etc/oraInst.loc

16. NOTE: JDK error is now removed.

Larry Catt, OCP

Changing command prompt in LINUX

1. Logon as the user which you which to change the prompt. NOTE: You have to add this to your .profile file to have it survive reboot. This file is normally located /home/ directory and it is a hidden file so will be preceded by a period.
2. Export a new PS1 value with the text you want: In this example I am using ‘username@machine_name promt’

$export PS1='[\u@mylinux \W ]\$’
[oracle@mylinux ~ ]$

3. This completes changing command prompt on LINUX.
Larry Catt, OCP

Set Linux Network Adapters to startup automatically

1. Logon as the root user to your Linux Server.

[larry@linux1 ~]$ sudo su
[root@linux1 larry]#

2. Execute the command: ip -o link show | awk -F’: ‘ ‘{print “ip link set dev “$2″ up”}’ >ip_up.sh

[root@linux1 larry]# ip -o link show | awk -F’: ‘ ‘{print “ip link set dev “$2″ up”}’ >ip_up.sh
[root@linux1 larry]#

3. Change Permission to 775 on file ip_up.sh

[root@linux1 larry]# chmod 770 ip_up.sh
[root@linux1 larry]#

4. Execute file ip_up.sh

[root@linux1 larry]# ./ip_up.sh
[root@linux1 larry]#

5. Execute the command:

find /etc/sysconfig/network-scripts -name “ifcfg-*” -not -name “*bak”| awk -F’: ‘ ‘{print “perl -pi.bak -e ‘”‘”‘s/ONBOOT=no/ONBOOT=yes/g'”‘”‘ “$1}’ > net_ifcfg_update.sh

6. Change the permissions to 775 on file net_ifcfg_update.sh.

[root@linux1 ~]# chmod 775 net_ifcfg_update.sh
[root@linux1 ~]#

7. Execute file net_ifcfg_update.sh.

[root@linux1 ~]# ./net_ifcfg_update.sh
[root@linux1 ~]#

8. Now restart your linux server with the command: reboot.

[root@linux1 larry]# reboot

9. This completes changing your Network adapters to automatically start at system start.

Larry Catt, OCP

Rename LINUX Server

1. Logon as the root user to your Linux Server.

[larry@localmachine ~]$ su –
Password:
Last login: Thu Jun 11 12:29:24 EDT 2017 on pts/1
[root@localmachine ~]#

2. You must edit the file /etc/hostname to change the local machine name. You can generate a statement to update /etc/hostname with the following bash command:

cat /etc/hostname | awk -F. ‘{print “\n\n perl -pi.bak -e ‘”‘”‘s/”$1″//g'”‘”‘ /etc/hostname”}’

[root@localmachine ~]# cat /etc/hostname | awk -F. ‘{print “\n\n perl -pi.bak -e ‘”‘”‘s/”$1″//g'”‘”‘ /etc/hostname”}’

perl -pi.bak -e ‘s/localmachine//g’ /etc/hostname
[root@localmachine ~]#

3. Take the resulting string and replace the text with the name of the machine you wish for your server.

Original Perl Command output:
perl -pi.bak -e ‘s/localmachine//g’ /etc/hostname

Edited Perl Command output: (New Server Name)

perl -pi.bak -e ‘s/localmachine/linux1/g’ /etc/hostname

[root@localmachine ~]# perl -pi.bak -e ‘s/localmachine/linux1/g’ /etc/hostname
[root@localmachine ~]#

4. Reboot your Linux Server.

[root@localmachine ~]# reboot

5. Logon to your Linux Server after reboot completes and see new name of Server with command: hostname.

[larry@linux1 ~]$ su –
Password:
Last login: Thu Jun 11 14:31:50 EDT 2017 from 10.30.15.69 on pts/1
[root@linux1 ~]# hostname
linux1.localdomain
[root@linux1 ~]#

6. This completes changing LINUX Server name.

Larry Catt, OCP

Executing SQL script from command line or executable shell script

You can call into SQLPLUS to execute SQL script from any shell script. This procedure shows how to structure your statements to LINUX environment for call into SQLPLUS from shell script.

1. Logon to your LINUX server as a user with access to SQLPLUS.
2. Use VI to create a executable file. Replace the connection string with appropriate username/password@SID values. Additionally, change the script you which to execute in this example we are executing “utlrp.sql”.

sqlplus sys/password@orcl as sysdba < < EOF @?/rdbms/admin/utlrp.sql exit; EOF

Larry Catt
OCP