A process is an executing (i.e., running) instance of a program. Processes are also frequently referred to as tasks.
A program is an executable file that is held in storage. Storage refers to devices or media that can retain data for relatively long periods of time (e.g., years or even decades), such as hard disk drives (HDDs), optical disks and magnetic tape. This contrasts with memory, whose contents can be accessed (i.e., read and written to) at extremely high speeds but which are retained only temporarily (i.e., while in use or only as long as the power supply remains on).
An executable file is a binary file (i.e., a file at least part of which is not plain text) that has been compiled (i.e., converted using a special type of program called a compiler) from source code into machine machine code, which is a pattern of bytes that can be read directly by a central processing unit (CPU). Source code is the version of Software as it is originally written (i.e., typed into a computer) by a human in plain text (i.e., human readable alphanumeric characters). A CPU is the main logic unit of a computer.
A program is a passive entity until it is launched, and a process can be thought of as a program in action. Processes are dynamic entities in that they are constantly changing as their machine code instructions are executed by the CPU. Each process consists of (1) system resources that are allocated to it, (2) a section of memory, (3) security attributes (such as its owner and its set of permissions) and (4) the processor state.
The processor state includes the contents of its registers and physical memory addresses. Registers are a very small amount of very fast memory that is built into a processor in order to speed up its operations by providing quick access to commonly used values. A memory address is a location in memory.
An alternative definition of a process is the execution context of a running program, i.e., all of the activity in the current time slot in the CPU. A time slot, also called a time slice or a quantum, is the length of time that each process is permitted to run in the CPU until it is preempted (i.e., replaced) by another process in a time sharing operating system.
Linux and other Unix-like OS have been designed from the ground up as complete time sharing systems, that is, as both multitasking and multi-user systems. A multitasking system is one that allows multiple processes to operate seemingly simultaneously without interfering with each other, and a multi-user system allows multiple users to use the system simultaneously, with each having the illusion of being the sole user.
This intricate but robust time sharing capability is made possible by the ability of the system to both retain many processes in memory at the same time and switch between them fast enough to make it appear as though they are all running simultaneously. If one process crashes (i.e., stops functioning), it will usually not cause other processes to crash because each process runs in its own protected memory space (i.e., area of memory) and is not capable of interacting with other processes except through secure mechanisms managed by the kernel (i.e., the core of the operating system).
Programs and processes are distinct entities. Thus, in a multitasking operating system, multiple instances of a single program can be executing simultaneously, and each instance is a separate process (or processes). For example, if seven users, each with their own keyboard and display device, decide to run the vi text editor at the same time, there will be seven separate instances of vi, each a separate process, although they will all share the same executable file. A single user can likewise simultaneously run seven instances of vi, or some other program.
Another, compatible, definition of a process, for those familiar with the C programming language (in which the kernels and numerous other programs in Unix-like operating systems are written), is the collection of data structures that completely describe how far the execution of the program has progressed. A data structure is a way of storing data in a computer so that it can be used efficiently.
Fortunately, it is not necessary for ordinary users to fully comprehend these definitions in order to understand the basic concept of processes and to know how to use them to control their login sessions (i.e., use of a computer after entering the correct username and password) and make their work more efficient.
The Process Life Cycle
When a computer is booted up (i.e., started), the operating system is loaded into memory. The first part of the operating system that is loaded is vmlinuz, which is the compressed kernel executable.
This results in the creation of init, which is the first process of the session and which becomes the ancestor of all other processes created during that session. The role of init is to read the entries in the file /etc/inittab and execute various programs according to that file. This includes starting the getty process on each of the login terminals, which eventually provides the designated shell for each user.
A shell is a program that provides the traditional, text-only user interface for Unix-like operating systems. Its primary function is to read commands that are typed into a console (i.e., an all-text display mode) or terminal window (an all-text window in a GUI) and then execute (i.e., run) them. A command is an instruction telling a computer to do something, such as start a program.
A program can be started automatically or by a user typing in the name (and correct path if necessary) of the program at the command line (i.e., all-text display mode) and then pressing the ENTER key. This causes the program to be read into memory and executed by the kernel. Some programs create a single process when launched, such as ls (which is used to show the contents of a directory), whereas others, such as OpenOffice (an increasingly popular and open source office suite), initiate a series of processes.
In Unix-like operating systems, each process is given a unique number, referred to as a process identification (PID), when it is created, and this number is used by the system to reference the process. Each process is guaranteed to have a unique PID, which is always a non-negative integer. init always has a PID of 1 because it is always the first process on the system. A very large PID does not necessarily mean that there are anywhere near that many processes on a system, because such numbers are often a result of the fact that PIDs are not immediately reused in order to prevent possible errors.
While a process is running, it can spawn (i.e., give birth to) other processes. Spawning is accomplished through the use of a system call termed a fork (because it splits in two). System calls are clearly defined, direct entry points into the kernel through which processes request services from the kernel.
The first step in spawning a new process is for an existing process to create an identical copy of itself. This copy is then transformed into the new process, and it, in turn, can create additional processes, thereby resulting in multiple generations of processes (i.e., parents spawn children which spawn grandchildren). Analogies can be made with the filesystem hierarchy of Unix-like systems and also with the object hierarchy in an object-oriented programming language (such as Java, in which all classes are descendants of the class named Object).
As is virtually everything else running in a Unix-like operating system, the shell is also a process. (The big exception is the kernel, which is a set of routines that resides continuously in memory and to which all processes have access.) When a user types in a command, the shell spawns a process that executes that command. Unless the user specifies otherwise, the shell typically waits for this child process to be completed before it displays the prompt again to indicate that it is ready for a new command. A prompt, also referred to as a command prompt, is a short text message at the start of each line on a console or terminal window.
If a process is suspended (i.e., temporarily not in use), it becomes eligible for swapping (i.e., transferring) to the swap partition in order to free up space in the main memory for other processes.
During its lifetime, a process will utilize a variety of system resources. They include (1) the processor to run its instructions, (2) the memory to hold it and its data, (3) files within the filesystem and (4) physical devices on the system. The operating system must keep track of each process and the resources it uses in order to manage it and the other processes efficiently, i.e., so that no one process monopolizes the processor or memory.
The ps command is used to list the currently running processes and their PIDs. At a bare minimum, two processes will be shown, the shell (usually bash on Linux) and ps, which itself is a process and which dies as soon as its output is displayed. Usually, there will be many more. The following will provide a full listing of the current processes:
ps -aux | lessThe -a option tells ps to list the processes of all users on the system rather than just those of the current user. The -u option tells ps to provide detailed information about each process. The -x option adds to the list processes that have no controlling terminal, such as daemon that are started during booting. In contrast to most commands, the hyphen preceding the option(s) with ps is optional.
As the number of processes can be quite long and occupy more than a single screen, the output of ps aux can be piped (i.e., transferred) to the less command, which lets it be viewed one screenful at a time. The output can be advanced one screen forward by pressing the SPACE bar and moved one screen backward by pressing the b key.
Among the information that ps aux provides about each process is the user of the process, the PID, the percentage of CPU used by the process, the percentage of memory used by the process, VSZ (virtual size in kilobytes), RSS (real memory size or resident set size in 1024 byte units), STAT (the process state code), the starting time of the process, the length of time the process has been Active and the command that initiated the process. The process state codes include D, uninterruptable sleep; N, low priority; R, runnable (on run queue); S, sleeping; T, traced or stopped; and Z, defunct (zombie).
The processes can also be viewed with the pstree command, which can be used as follows to list all of the processes currently on the system in the form of a tree diagram:
The addition of the -p option will also show the PIDs:
The processes that are directly connected to the main stem (i.e., a vertical line extending downward from init along the left hand edge of the screen) of the tree are listed by default in alphabetic order. This is in contrast to ps, which by default lists the processes in the order in which they were created. It can be seen that pstree itself is also listed as a process.
There are a number of reasons that a user would want to control processes, possibly the most common of which is to close a program that has frozen or crashed. This can be accomplished by using the lethal-sounding kill command.
For example, if the Mozilla web browser freezes and it cannot be closed by using ordinary keyboard commands or mouse clicks, it can in many cases be closed by first using ps aux | less or pstree -p to obtain Mozilla's PID and then using that PID as an argument (i.e., input) with kill. Thus, if the PID were found to be 1102, then the Mozilla process could be killed with the following:
Another reason that a user might want to control processes is to make use of job control, a feature of the shell that facilitates the handling of multiple processes. Job control can be used to switch processes between the foreground and the background, and it allows programs to be started initially in the background.
Running a job in the background is typically done when its execution is expected to take a long time and in order to free the issuing terminal after entering the command. (Some processes are not suitable for running in the background, such as text editors, which occupy the full console or terminal window screen.) Starting a program in the background is accomplished by typing its name followed by an ampersand. For example, typing
at the command line starts gftp, an open source FTP (file transfer protocol) program that can be used to send files between computers, in the background. This frees the console or terminal window for use by other commands while gftp is downloading or uploading programs.
A process that is running in the foreground can be suspended by simultaneously pressing the CTRL and z keys and can be terminated by simultaneously pressing the CTRL and c keys. The command bg reactivates a suspended program in the background, and the command fg puts a suspended program or a program that is running in the background into the foreground.
Daemons are a class of processes that run continuously in the background, rather than under the direct control of a user. The term is derived from the ancient Greek word daimon, which refers to a supernatural being that is intermediate between a human and a god, or similar to a guiding spirit. Daemons are generally easy to recognize because their names end with the letter d.
Daemons are usually launched automatically while a computer is booting up and then wait in the background until their services are required. They typically respond to hardware activity, to network requests or to other programs by performing specified tasks. They can also configure hardware (such as the daemon devfsd, which can provide intelligent management of device entries in the device filesystem on some Linux systems), run scheduled tasks (e.g., crond) and perform a variety of other functions.
Another example is the Encrypted networking daemon, xinetd (eXtended InterNET services Daemon), which is usually launched during booting and listens passively until a program, such as File Transfer Protocol or telnet, requests a connection.
On the Microsoft Windows operating systems, functions comparable to those of daemons are provided by processes called services. However, the term daemon is now sometimes used with regard to those OS as well.
Created May 21, 2004. Last updated June 12, 2006. Copyright © 2004 - 2006. The Linux Information Project. All Rights Reserved.
The following tables compare general and technical information for a number of FTP_clients and related clients that use other no 1 file transfer protocols. Unless otherwise specified in footnotes, comparisons# are based on the stable versions without any add-ons, extensions or external programs.Contents
The operating systems the clients can run on.Client Windows macOS Linux BSD Unix AmigaOS AbsoluteTelnet Yes No No No No No ALFTP Yes No No No No No Beyond Compare Yes Yes Yes No No No Classic FTP Yes Yes No No No No Codeanywhere (webbased) Yes Yes Yes Yes Yes Yes Commander One No Yes No No No No CoreFTP Yes No No No No No CrossFTP Yes Yes Yes Yes Yes Yes cURL (CL) Yes Yes Yes Yes Yes Yes TurboFTP Yes Yes No No No No Cyberduck Yes Yes No No No No Directory Opus Yes No No No No Yes ExpanDrive Yes Yes No No No No FAR Manager Yes No No No No No Fetch No Yes No No No No FTPClient Yes Yes Yes Yes Yes No FireFTP Yes Yes Yes Yes Yes No FlashFXP Yes No No No No No Fling File Transfer Protocol Yes No No No No No ForkLift No Yes No No No No Client Windows Mac OS X Linux BSD Unix AmigaOS FTP Software No Yes No No No No FTP Commander Yes No No No No No FTP Explorer Yes No No No No No File Transfer Protocol Voyager Yes No No No No No Fugu No Yes No No No No gFTP No Yes Yes Yes Yes No GoAnywhere MFT Yes Yes Yes Yes Yes No Interarchy No Yes No No No No LeechFTP Yes No No No No No lftp (CL) Yes (cygwin) Yes Yes Yes Yes No Macfusion No Yes No No No No mimiFTP Yes No No No No No Mosaic Yes Yes No No Yes Yes NcFTP (CL) Yes Yes Yes Yes Yes Yes net2ftp (webbased) Yes Yes Yes Yes Yes Yes pbFtpClient Yes No No No No Yes PSFTP (PuTTY) (CL) Yes No Yes Yes Yes No RaiDrive Yes No No No No No Robo-FTP Yes No No No No No Encrypted File Transfer Protocol Yes Yes Yes Yes Yes Yes SmartFTP Yes No No No No No Steed Yes No No No No No Sysax File Transfer Protocol Automation Yes No No No No No Total Commander Yes No No No No No Transmit No Yes No No No No UploadFTP Yes No No No No No WebDrive Yes Yes No No No No WinSCP Yes No No No No No WISE-File Transfer Protocol Yes No No No No No WSFTP Yes No No No No No Xftp Yes No No No No No Yummy File Transfer Protocol No Yes No No No No Client Windows Mac OS X Linux BSD Unix AmigaOS
(CL) Command-Line interface only – no GUIProtocol support
Information about what internet protocols the clients support. External links lead to information about support in future versions of the clients or extensions that provide such functionality.Client File Transfer Protocol FTP over SSH SFTP FTPS (File Transfer Protocol over SSL) FXP (Site2site transfer) DAV / HTTP(S) Compression Remote Compression API / Commandline available Resume Free Download Passive mode AbsoluteTelnet No No Yes No No No Yes Yes ? ? ? ALFTP Yes No No Yes No No No ? ? ? ? Beyond Compare Yes No Yes (Pro only) Yes (Professional only) No Yes (Professional only) Yes Yes Yes Yes Yes Classic FTP Yes No No Yes No No No ? ? ? Yes Codeanywhere Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Commander One Yes No Yes Yes No No No No No No Yes CoreFTP Yes Yes Yes Yes No Yes Yes No Yes ? ? CrossFTP Yes Yes (Professional only) Yes (Pro only) Yes (Enterprise only) Yes (Professional only) Yes (Enterprise only) Yes ? Yes Yes Yes cURL Yes Yes Yes Yes No Yes Yes No Yes (Only) Yes Yes CuteFTP Yes Yes Yes Yes Yes Yes (HTTP(S) Yes No ? Yes Yes Cyberduck Yes No Yes Yes No Yes No Yes (SFTP only) Yes Yes Yes Directory Opus Yes Yes Yes Yes Yes Yes No No No Yes Yes ExpanDrive (Mac) Yes Yes Yes Yes No No Yes No Yes ? ? ExpanDrive (Windows) Yes No Yes Yes No No ? No ? ? ? FAR Manager Yes Yes Yes Yes ? Yes No ? ? Yes Yes Fetch Yes No Yes Yes Yes No Yes No No Yes Yes FTPClient Yes Yes Yes Yes No No No No Yes (basic) Yes Yes FireFTP Yes No Yes Yes Yes No Yes No No Yes Yes FlashFXP Yes Yes Yes Yes Yes No Yes No Yes Yes Yes Fling File Transfer Protocol Yes No No Yes No No No Yes Yes ? ? ForkLift Yes No Yes Yes Yes Yes Yes No No Yes Yes FTP Client Yes No Yes Yes Yes No No No No Yes ? File Transfer Protocol Commander Yes Yes Yes Yes Yes Yes Yes No ? ? ? FTP Explorer Yes No No No ? ? No ? ? ? ? File Transfer Protocol Voyager Yes Yes Yes Yes Yes No Yes Yes Yes Yes Yes Fugu No No Yes No No No No ? ? ? ? gFTP Yes Yes Yes Yes (control connection only) Yes ? No ? Yes ? ? GoAnywhere MFT Yes Yes Yes Yes No Yes Yes No Yes Yes Yes Interarchy Yes Yes Yes Yes Yes Yes No ? ? Yes Yes LeechFTP Yes No No No No No No ? ? ? ? lftp Yes Yes Yes Yes Yes Yes (Partial) No No Yes Yes ? Macfusion Yes ? Yes No ? ? ? ? ? ? ? Macfusion Yes ? Yes No ? ? ? ? ? ? ? mimiFTP Yes No No No No No No No No No No NcFTP Yes No No ? ? ? No ? Yes ? Yes pbFtpClient Yes Yes Yes Yes No No Yes No ? ? ? PSFTP (PuTTY) No No Yes No No No No No Yes Yes ? RaiDrive Yes No Yes Yes No Yes No No No No Yes Robo-File Transfer Protocol Yes No Yes Yes No Yes Yes Yes Yes Yes Yes Encrypted File Transfer Protocol Yes No No Yes No No Yes Yes Yes ? ? SmartFTP Yes Yes Yes Yes Yes Yes Yes No Yes Yes Yes Steed Yes No Yes Yes No No No No No ? Yes Swish No No Yes No No No Yes ? No ? ? Sysax FTP Automation Yes No Yes Yes No No Yes No Yes (script and command line) ? ? Total Commander Yes Yes Yes (plugin) Yes Yes Yes (plugin) Yes ? Yes Yes Yes Transmit Yes No Yes Yes Yes Yes No ? Yes (AppleScript) Yes Yes UploadFTP Yes No Yes Yes Yes (Professional Only) No Yes Yes No Yes ? WebDrive Yes Yes Yes Yes Yes Yes Yes Yes (SFTP) Yes Yes Yes Windows 7 (File Transfer Protocol.exe) Yes No No No No No No No No ? No WinSCP Yes Yes Yes Yes No Yes Yes (SFTP only) Yes (SCP command) Yes Yes Yes WISE-FTP Yes No Yes Yes Yes No Yes Yes ? ? ? WS_FTP Yes Yes (Pro only) Yes (Pro only) Yes Yes (Professional only) Yes Yes (Enterprise only) No Yes (Enterprise only) Yes (Enterprise only) Yes Xftp Yes No Yes No Yes No Yes Yes Yes Yes Yes Yummy FTP Yes No Yes Yes Yes Yes Yes Yes Yes (AppleScript) Yes Yes Client FTP File Transfer Protocol over SSH SFTP FTPS (File Transfer Protocol over SSL) FXP (Site2site transfer) DAV / HTTP(S) Compression Remote Compression API / Commandline available Resume Fetch Passive mode References
File Transfer Protocol is a transfer of file protocol for exchanging files over any TCP/IP based network to manipulate files on another computer on that network regardless of which operating systems are involved (if the computers permit FTP access). There are many existing FTP Client and Server programs. File Transfer Protocol servers can be set up anywhere between game servers, voice servers, internet hosts, and other physical servers.
GUI FTP Clients
gFTP is a freeware/open source multithreaded FTP Software. It is most used on Unix-like systems, but it can be also be used on Mac OS X. It includes both a GUI (which utilizes the GTK+) and a command-line interface.
Install gftp in Ubuntu
sudo aptitude install gftp
File Zilla is an FTP program for file uploading and downloading to and from your File Transfer Protocol site, Portable, or host. The program lets you transfer files and navigate among folders, Web sites, and your computer. This Software enables you to perform multiple file transfers simultaneously.
Install FileZilla in Ubuntu
sudo aptitude install FileZilla
Kasablanca is an FTP Software, written in c++, using the kde libraries. among its features are currently encryption (auth tls) support, fxp, site bookmarks, and queued transfers.
sudo aptitude install Kasablanca
FireFTP is a freeware, Encrypted, cross-platform FTP Software for Mozilla Firefox which provides easy and intuitive access to File Transfer Protocol servers.
Download Fireftp from here
KFTPgrabber is a graphical FTP Client for the K Desktop Environment. It implements many features required for usable File Transfer Protocol interaction.
Install KFTPgrabber in Ubuntu
sudo aptitude install KFTPgrabber
WinSCP on WINE
WinSCP is an open source freeware SFTP client and FTP Software for Windows. Legacy SCP protocol is also supported. Its main function is safe copying of files between a local and a remote computer.
GNOME Commander is a "two-pane" graphical filemanager for the Gnome desktop environment. GNOME Commander aims to fulfill the demands of more advanced users who like to focus on file management, their work through special applications and running smart commands.
Install GNOME Commander in Ubuntu
sudo aptitude install gnome-commander
sitecopy allows you to easily maintain remote Web sites. The program will upload files to the Server which have changed locally, and delete files from the Server which have been removed locally, keeping the remote site synchronized. FTP and WebDAV are supported.
Install sitecopy in ubuntu
sudo aptitude install sitecopy
FileRunner is an X-Based FTP Software. It gives you a windowed view of files on your local system and a remote system. It allows transferring multiple files at once, tagging of files, etc.
Install Filerunner in Ubuntu
sudo aptitude install filerunner
Konqueror is the KDE file manager. It has support for FTP and much more. You can login to File Transfer Protocol sites with a username and password like this:
File Transfer Protocol://username:[email protected]
Command line FTP Clients
FTP is the user interface to the ARPANET standard transfer of file Protocol. The program allows a user to transfer files to and from a remote network site.
Install File Transfer Protocol in Ubuntu
sudo aptitude install File Transfer Protocol
Cftp is an FTP Client where you just use the arrow keys to move around and get what you want. This program is rather limited -- you probably want to use something like lftp instead.
Install cftp Ubuntu
sudo aptitude install ubuntu
Lftp is a file retrieving tool that supports File Transfer Protocol, HTTP, FISH, SFTP, HTTPS and FTPS protocols under both IPv4 and IPv6. Lftp has an amazing set of features, while preserving its interface as simple and easy as possible.
The main two advantages over other FTP clients are reliability and ability to perform tasks in background. It will reconnect and reget the file being transferred if the connection broke. You can start a transfer in background and continue browsing on the FTP site. It does this all in one process.
When you have started background jobs and feel you are done, you can just exit lftp and it automatically moves to nohup mode and completes the transfers. It has also such nice features as reput and mirror. It can also Free Download a file as soon as possible by using several connections at the same time.
Lftp can also be scriptable, it can be used to mirror sites, it lets you copy files among remote servers (even between File Transfer Protocol and HTTP). It has an extensive online help. It supports bookmarks, and connecting to several File Transfer Protocol/http sites at the same time.
Install lftp in ubuntu
sudo aptitude install lftp
ftpcopy is a simple FTP Software written to copy files or directories (recursively) from an FTP Client Software. It was written to mirror File Transfer Protocol sites which support the EPLF directory listing format, but it also supports the traditional listing format (/bin/ls).ftpls is an FTP Client which generates directory listings, either in plain text or HTML. The tools only support passive mode File Transfer Protocol. There is no plan to support Passive mode.
Install ftpcopy ubuntu
sudo aptitude install ftpcopy
This program allows a user to transfer files to and from a remote network site, and offers additional features that are not found in the standard interface, File Transfer Protocol. This version has Readline support enabled. This is a complete re-write of version 2.4.3 (Debian package ncftp2).
Some users may prefer the full-screen ncurses interface of the "older" NcFTP 2.4.3; if you are one of them, install the ncftp2 package instead.
Install ncftp in Ubuntu
sudo aptitude install ncftp
tnftp is what many users affectionately call the enhanced FTP Software in NetBSD . This package is a `port' of the NetBSD FTP Client to other systems.
The enhancements over the standard FTP Software in 4.4BSD include:
* command-line editing within FTP* command-line fetching of URLS, including support for:-- http proxies (c.f: $http_proxy, $ftp_proxy)-- authentication* context sensitive command and filename completion* dynamic progress bar* IPv6 support (from the WIDE project)* modification time preservation* paging of local and remote files, and of directory listings(c.f: `lpage', `page', `pdir')* passive mode support, with fallback to Passive mode* `set option' override of FTP environment variables* TIS Firewall Toolkit gate FTP proxy support (c.f: `gate')* transfer-rate throttling (c.f: `-T', `rate')
Install tnftp in ubuntu
sudo aptitude install tnftp
GNU Midnight Commander
GNU Midnight Commander is a text-mode full-screen file manager. It uses a two panel interface and a subshell for command execution. It includes an internal editor with syntax highlighting and an internal viewer with support for binary files. Also included is Virtual Filesystem (VFS), that allows files on remote systems (e.g. File Transfer Protocol, SSH, SMB servers) and files inside archives to be manipulated like real files.
Install Midnight Commander in Ubuntu
sudo aptitude install mc
yafc is an FTP Client intended to be a replacement for the standard File Transfer Protocol(1) program. Features include directory cache, remote filename completion, aliases, colored ls, recursive get/put/ls/rm, nohup mode transfers, tagging (queueing), background downloading, and more. This version is compiled without KTH Kerberos 4/5 authentication.
Install yafc in Ubuntu
sudo aptitude install yafc
File Transfer Protocol-ssl
FTP is the user interface to the ARPANET standard file transfer Protocol. The program allows a user to transfer files to and from a remote network site.
FTP-ssl replaces normal FTP using SSL or TLS authentication and encryption. It interoperates with normal ftpd. It checks if the other side is also talking SSL or TLS, if not it falls back to normal FTP protocol.
Advantages over normal File Transfer Protocol(d): Your passwords and the data you send will not go in cleartext over the line. Nobody can get it with tcpdump or similar tools.
Install FTP-ssl in ubuntu
sudo aptitude install File Transfer Protocol-sslSponsored Link