How to use talk command.

What is talk command?

The talk command in Linux is a utility that allows two users to have a real-time text-based conversation over a network. It provides a simple and interactive way to communicate with another user who is logged into the same system or a remote system.

  • talk is a command-line tool that is typically used in Unix-like operating systems, including Linux.
  • It operates using the client-server model, where one user initiates the conversation by sending an invitation to another user.
  • Once the invitation is accepted, both users can type and send messages to each other in real-time, similar to a chat or instant messaging system.
  • talk uses the Terminal or console interface for communication, with each user’s messages appearing on the screen.
  • It allows for a one-on-one conversation between two users, with each message displayed in a separate window.
  • The talk utility uses the User Datagram Protocol (UDP) or the Stream Control Transmission Protocol (SCTP) for communication.
  • By default, users can only initiate a talk session with other users who are logged into the same system. However, it is possible to configure the system to allow talk sessions between remote systems.
  • To start a talk session, you would typically use the following syntax:

Syntax:

talk <username>
user    - user's login name.
-x      - talk with user who has dot character in username.
ttyname - talk with user who has logged in more than once using the terminal name.

Installation of talk command:

For Ubuntu/Debian :

sudo apt-get install talk
sudo apt-get install talk-server

For CentOS/Fedora :

sudo yum install talk
sudo yum install talk-server

Configuration:

  • Create two files named talk and ntalk under /root directory.
  • Edit talk file as below,
# default: off
# description: The talk server accepts talk
# requests for chatting with users \
# on other systems.
service talk
{
   flags = IPv4
   disable = no
   socket_type = dgram
   wait = yes
   user = nobody
   group = tty
   server = /usr/sbin/in.talkd
}
  • Next edit ntalk file as below,
# default: off
# description: The ntalk server accepts 
# ntalk connections, for chatting \
# with users on different systems.
service ntalk
{
   flags = IPv4
   disable = no
   socket_type = dgram
   wait = yes
   user = nobody
   group = tty
   server = /usr/sbin/in.ntalkd
}
  • Then restart xinetd service.

Working with talk command

Whenever talk command is issued, it will contact the talk-daemon on the other user’s terminal and send the below message to that user,

Message from TalkDaemon@his_machine...
talk: connection requested by your_name@your_machine.
talk: respond with: talk your_name@your_machine

Now, other users can respond by typing

talk your_name@your_machine

The talk command works by copying lines from one terminal to that of the terminal used by another user. It splits the window into 2 panes (top and bottom) wherein user can type in the top pane and the response would be seen in the bottom pane in another terminal. It can be used to

  1. To communicate with users on the same host or on the different host,
talk <username> => local user
talk username@hostname or talk username@ip_address => remote user

Talk daemon first checks if the user has logged in. If not, it will report that the user is not logged on and wait for the user to connect.

 Once the user is logged-in, it will send a message and wait for the response from that user.

 If there is no response, then the daemon will continuously send message to that user.

 Once the destined user connects, the connection will be established and both can chat now. 

Pressing Ctrl+c will terminate the connection.

  1. To talk with the user who has a dot character in username, then have to use the -x argument.
talk <user_name> -x
  1. If the user has logged in more than once, then the terminal name can be used to connect with that user.
talk <user_name> <tty> => talk root pts/17

If the user does not want to receive talk requests, then it can be blocked using the mesg command. Thus using the talk command we have understood various ways to connect with another user.