Menghapus GPT Partition label pada Disk

February 13, 2015

Pernahkah anda menemukan error berikut pada saat akan menginstall Linux?

gpt error

GPT Partition Error

Ini berarti hdd anda diset menggunakan GPT (GUID Partition Table). Pada sebagian distribusi linux terkadang masih ada yang belum support GPT sehingga kita harus mengconvertnya menjadi MBR.

Berikut adalah cara mudahnya yang saya temukan pada knowledge basenya Redhat:

PERHATIAN: Perintah berikut akan menghapus semua partisi pada hdd anda, lakukan backup terlebih dahulu. Saya tidak bertanggung jawab atas kehilangan data yang terjadi karena mengikuti langkah ini.

Login ke linux rescue mode menggunakan CD installasi linux

Linux Rescue Mode

Linux Rescue Mode

 

Pada prompt shell, gunakan comand parted berikut untuk merubah label pada disk. Pada contoh berikut hdd pada system saya adalah /dev/cciss/c0d0. Kemungkinan akan berbeda pada system anda

Parted Command

Parted Command

Verifikasi lagi untuk melihat apakah disk labelnya sudah berubah

Verifikasi

Verifikasi perintah parted

Perhatikan pada baris “Partition Table: msdos” ini tandanya disk telah berhasil dirubah menjadi MBR.

Setelah disk berhasil dirubah partition tablenya maka anda bisa reboot systemnya dan melakukan install linux seperti biasa.

 

Sekian.


[Test] Membuat kolom perintah di wordpress

July 23, 2014

Postingan ini adalah test, selanjutnya untuk memudahkan proses salin dan tempel perintah – perintah linux saya akan menggunakan box dari gist.github.com.

Berikut contohnya:

Salam..


Menginstall Docker di CentOS 6.5

June 16, 2014

Setelah baru cuma sekadar baca – baca mengenai docker dan linux container, sepertinya menarik.

Akhirnya baru hari ini ada waktu untuk ngoprek coba install dan bikin – bikin docker.
Ternyata tidak sesusah keliatannya, syukurlah dokumentasi dan manual installasinya disediakan lumayan lengkap dan mudah diikuti.

Malah ada emulator-nya segala buat yang mau sekadar nyoba, dan ternyata disitu racunnya, jadi keterusan install beneran deh.🙂

docker.com

Kali ini saya coba install di vps saya yang cuma punya memory 512MB dan disk cuma 20GB dengan sistem operasi Linux CentOS 6.5

Berikut catatannya:

Untuk CentOS 6 packet rpm docker-io ada pada repository epel, untuk menggunakan epel cukup download packet epel-release nya dialamat berikut:

http://download.fedoraproject.org/pub/epel/6/i386/repoview/epel-release.html

 

[root@dudulz-box ~]# wget http://kartolo.sby.datautama.net.id/EPEL/6/i386/epel-release-6-8.noarch.rpm
--2014-06-16 06:20:14-- http://kartolo.sby.datautama.net.id/EPEL/6/i386/epel-release-6-8.noarch.rpm
Resolving kartolo.sby.datautama.net.id... 123.255.202.74, 2403:ba00:602::1e
Connecting to kartolo.sby.datautama.net.id|123.255.202.74|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 14540 (14K) [application/x-redhat-package-manager]
Saving to: âepel-release-6-8.noarch.rpmâ

100%[======================================>] 14,540 34.7K/s in 0.4s

2014-06-16 06:20:14 (34.7 KB/s) - âepel-release-6-8.noarch.rpmâ

Install package epel-release nya:

[root@dudulz-box ~]# rpm -ivh epel-release-6-8.noarch.rpm
warning: epel-release-6-8.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
Preparing... ########################################### [100%]
1:epel-release ########################################### [100%]

Sekarang coba cari package docker-io:

[root@dudulz-box ~]# yum search docker-io
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
epel/metalink | 13 kB 00:00
* base: mirrors.kernel.org
* epel: mirrors.kernel.org
* extras: mirrors.kernel.org
* updates: mirrors.kernel.org
epel | 4.4 kB 00:00
epel/primary_db | 6.2 MB 00:00
epel/pkgtags | 1.0 MB 00:00
============================ N/S Matched: docker-io ============================
docker-io.x86_64 : Automates deployment of containerized applications

Name and summary matches only, use "search all" for everything.

Ok, sudah ketemu. Mari mulai kita install docker-io nya sekarang:

[root@dudulz-box ~]# yum install docker-io
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.kernel.org
* epel: mirrors.kernel.org
* extras: mirrors.kernel.org
* updates: mirrors.kernel.org
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package docker-io.x86_64 0:0.11.1-4.el6 will be installed
--> Processing Dependency: xz for package: docker-io-0.11.1-4.el6.x86_64
--> Processing Dependency: lxc for package: docker-io-0.11.1-4.el6.x86_64
--> Processing Dependency: libcgroup for package: docker-io-0.11.1-4.el6.x86_64
--> Running transaction check
---> Package libcgroup.x86_64 0:0.40.rc1-5.el6_5.1 will be installed
---> Package lxc.x86_64 0:0.9.0-2.el6 will be installed
--> Processing Dependency: liblxc.so.0()(64bit) for package: lxc-0.9.0-2.el6.x86 _64
---> Package xz.x86_64 0:4.999.9-0.3.beta.20091007git.el6 will be installed
--> Running transaction check
---> Package lxc-libs.x86_64 0:0.9.0-2.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
docker-io x86_64 0.11.1-4.el6 epel 4.4 M
Installing for dependencies:
libcgroup x86_64 0.40.rc1-5.el6_5.1 updates 125 k
lxc x86_64 0.9.0-2.el6 epel 78 k
lxc-libs x86_64 0.9.0-2.el6 epel 116 k
xz x86_64 4.999.9-0.3.beta.20091007git.el6 base 137 k

Transaction Summary
================================================================================
Install 5 Package(s)

Total download size: 4.9 M
Installed size: 24 M
Is this ok [y/N]: y
Downloading Packages:
(1/5): docker-io-0.11.1-4.el6.x86_64.rpm | 4.4 MB 00:00
(2/5): libcgroup-0.40.rc1-5.el6_5.1.x86_64.rpm | 125 kB 00:00
(3/5): lxc-0.9.0-2.el6.x86_64.rpm | 78 kB 00:00
(4/5): lxc-libs-0.9.0-2.el6.x86_64.rpm | 116 kB 00:00
(5/5): xz-4.999.9-0.3.beta.20091007git.el6.x86_64.rpm | 137 kB 00:00
--------------------------------------------------------------------------------
Total 32 MB/s | 4.9 MB 00:00
warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOK EY
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
Importing GPG key 0x0608B895:
Userid : EPEL (6)
Package: epel-release-6-8.noarch (installed)
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
Is this ok [y/N]: y
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Warning: RPMDB altered outside of yum.
Installing : libcgroup-0.40.rc1-5.el6_5.1.x86_64 1/5
Installing : lxc-libs-0.9.0-2.el6.x86_64 2/5
Installing : lxc-0.9.0-2.el6.x86_64 3/5
Installing : xz-4.999.9-0.3.beta.20091007git.el6.x86_64 4/5
Installing : docker-io-0.11.1-4.el6.x86_64 5/5
Verifying : xz-4.999.9-0.3.beta.20091007git.el6.x86_64 1/5
Verifying : lxc-libs-0.9.0-2.el6.x86_64 2/5
Verifying : docker-io-0.11.1-4.el6.x86_64 3/5
Verifying : libcgroup-0.40.rc1-5.el6_5.1.x86_64 4/5
Verifying : lxc-0.9.0-2.el6.x86_64 5/5

Installed:
docker-io.x86_64 0:0.11.1-4.el6

Dependency Installed:
libcgroup.x86_64 0:0.40.rc1-5.el6_5.1
lxc.x86_64 0:0.9.0-2.el6
lxc-libs.x86_64 0:0.9.0-2.el6
xz.x86_64 0:4.999.9-0.3.beta.20091007git.el6

Complete!

Sampai disini proses installasinya sudah selesai, langkah berikutnya adalah menjalankan service docker.

Cek versi docker:

[root@dudulz-box ~]# docker version
Client version: 0.11.1
Client API version: 1.11
Go version (client): go1.2.1
Git commit (client): fb99f99/0.11.1
2014/06/16 06:21:41 Get http:///var/run/docker.sock/v1.11/version: dial unix /var/run/docker.sock: no such file or directory

Jalankan service docker:

[root@dudulz-box ~]# service docker start
Starting cgconfig service: [ OK ]
Starting docker: [ OK ]

Masukkan service docker ke dalam start up script jika mau langsung up bila servernya restart:

[root@dudulz-box ~]# chkconfig docker on

Setelah selesai semua, nah disinilah mulai menarik.
Tapi sayang kalau saya lanjutkan disini, bersambung aja deh😀

Salam.


Command line speedtest

April 19, 2014

Untuk mengetest kecepatan koneksi internet, biasanya saya menggunakan site yang sudah sangat populer yaitu speedtest.net yang dapat diakses menggunakan browser internet. Untuk mengakses site ini kita memerlukan flash yang harus terinstall pada browser.

Speedtest Result

Bagaimana jika kita ingin melakukan speedtest pada server kita yang tidak menggunakan GUI?

Berikut adalah yang saya lakukan:

Download script speedtest-cli
[onay@dudulz-box ~]$ wget -O speedtest-cli https://raw.github.com/sivel/speedtest-cli/master/speedtest_cli.py
--2014-04-19 02:36:06-- https://raw.github.com/sivel/speedtest-cli/master/speedtest_cli.py
Resolving raw.github.com... 103.245.222.133
Connecting to raw.github.com|103.245.222.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 20043 (20K) [text/plain]
Saving to: âspeedtest-cliâ

100%[==============================================================================================================================>] 20,043 --.-K/s in 0s

2014-04-19 02:36:07 (60.9 MB/s) - âspeedtest-cliâ

Berikan permissions untuk execute pada scriptnya
[onay@dudulz-box ~]$ chmod +x speedtest-cli

Execute script untuk mulai melakukan speedtest
[onay@dudulz-box ~]$ ./speedtest-cli
Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
Testing from DigitalOcean (XXX.XXX.XXX.XXX)...
Selecting best server based on ping...
Hosted by SGIX (Singapore) [6.25 km]: 22.014 ms
Testing download speed........................................
Download: 408.71 Mbit/s
Testing upload speed..................................................
Upload: 82.48 Mbit/s
[onay@dudulz-box ~]$

Hasil speedtest untuk donwload/upload ada pada bagian yang saya cetak tebal pada output diatas.

Thanks to https://github.com/sivel yang sudah bersusah payah membuat scriptnya dan memberikannya gratis untuk public.

Wasallam.


Bagaimana mengupdate OpenSSL pada CentOS

April 9, 2014

Beberapa hari lalu sebuah bug yang dinamakan heartbleed di openssl telah dipublish.
Keterangan lengkap mengenai bug ini dapat dilihat pada tautan berikut: http://heartbleed.com/
Pada tautan tersebut diatas juga diketahui versi openssl yang terdapat bug tersebut adalah versi:

OpenSSL 1.0.1 through 1.0.1f (inclusive) are vulnerable
OpenSSL 1.0.1g is NOT vulnerable
OpenSSL 1.0.0 branch is NOT vulnerable
OpenSSL 0.9.8 branch is NOT vulnerable

Bila anda pengguna Redhat/Centos versi 6.5 maka kemungkinan besar openssl anda terkena bug tersebut juga.
Dalam milis resmi centos yang saya ikuti juga, Karanbir Singh sang Centos project leader telah merilis sementara paket yang mendisable fitur bug pada openssl tersebut.

Paket yang dirilisnya dapat anda lihat pada tautan berikut:
http://lists.centos.org/pipermail/centos-announce/2014-April/020249.html

Sambil menunggu paket openssl baru yang telah diperbaiki tersedia untuk Centos 6.5, ada baiknya anda mengupdate paket sementara tersebut. Bila yum anda telah disetting ke repo centos maka berikut adalah cara mudah untuk mengupdatednya:

Versi Centos 6.5 yang terkena bug:
[root@dudulz-box ~]# cat /etc/redhat-release
CentOS release 6.5 (Final)

Versi openssl-101e yang terkena bug:
[root@dudulz-box ~]# rpm -qa | grep openssl
openssl-1.0.1e-16.el6_5.x86_64

Perintah untuk mengupdate openssl:
[root@dudulz-box ~]# yum update openssl
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: centos.mirror.secureax.com
* extras: centos.mirror.secureax.com
* updates: centos.mirror.secureax.com
Setting up Update Process
Resolving Dependencies
--> Running transaction check
---> Package openssl.x86_64 0:1.0.1e-16.el6_5 will be updated
---> Package openssl.x86_64 0:1.0.1e-16.el6_5.7 will be an update
--> Finished Dependency Resolution

Dependencies Resolved

========================================================================================================================================================================
Package Arch Version Repository Size
========================================================================================================================================================================
Updating:
openssl x86_64 1.0.1e-16.el6_5.7 updates 1.5 M

Transaction Summary
========================================================================================================================================================================
Upgrade 1 Package(s)

Total download size: 1.5 M
Is this ok [y/N]: y
Downloading Packages:
openssl-1.0.1e-16.el6_5.7.x86_64.rpm | 1.5 MB 00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Updating : openssl-1.0.1e-16.el6_5.7.x86_64 1/2
Cleanup : openssl-1.0.1e-16.el6_5.x86_64 2/2
Verifying : openssl-1.0.1e-16.el6_5.7.x86_64 1/2
Verifying : openssl-1.0.1e-16.el6_5.x86_64 2/2

Updated:
openssl.x86_64 0:1.0.1e-16.el6_5.7

Complete!

Versi openssl 1.0.1e-16.el6_5.7 yang telah mendisable bug tersebut diatas:
[root@dudulz-box ~]# rpm -qa | grep openssl
openssl-1.0.1e-16.el6_5.7.x86_64

Selesai.

Salam,


Cara mudah mensalin ssh-key ke server remote

November 4, 2013

Salah satu ciri yang membedakan antara unix dengan linux adalah, di Linux banyak sekali tools2 kecil untuk memudahkan suatu task.

Contohnya adalah tools berikut untuk mensalin ssh-key ke server remote sehingga kita bisa mengakses remote server tersebut tanpa menggunakan password (password less).

ssh-keygen
ssh-copy-id -i ~/.ssh/id_rsa.pub remote-host

Bila tanpa menggunakan tools diatas, kita harus mengcopy paste manual atau mengirim filenya secara manual keserver tujuan.

Lumayan menghemat beberapa langkah command bila menggunakan tools diatas.🙂


TIPS: Mengganti password dengan 1 baris command

October 31, 2013

Sebagai sysadmin yang mengelola lebih dari satu system, kadang proses untuk membuat user akan terasa melelahkan.
Proses pembuatan user memang bisa dilakukan dengan membuat shell script dan dapat dilooping ke semua server, tapi bagaimana dengan passwordnya?

Setiap proses pembuatan user akan selalu diikuti dengan memberikan password untuk user tersebut.
Berikut contohnya:

[root@dudulz-box ~]# useradd onay
[root@dudulz-box ~]# passwd onay
Changing password for user onay.
New UNIX password: => Masukkan password pertama
Retype new UNIX password: => Masukkan password yang sama kedua kalinya
passwd: all authentication tokens updated successfully.

Pada saat memberikan password, diperlukan 2 kali masukan passwordnya sehingga akan sangat memakan waktu dan melelahkan jika kita punya banyak sekali server yang harus dimaintain.

Dulu saya mengakalinya dengan menggunakan tools expect, yang bisa digunakan untuk menunggu keluaran dari suatu command dan bisa membalas keluaran command tersebut dengan inputan baru.

Saya baru tahu kalau ternyata command passwd punya options ampuh dan ajaib untuk memberikan password dalam satu kali inputan saja. Thanks to Om Kemas yang sudah memberitahu saya options ini. *sungkem

Berikut adalah contohnya:

[root@dudulz-box ~]# echo "passwordbaru" | passwd --stdin onay
Changing password for user onay.
passwd: all authentication tokens updated successfully.

Sesimple itu lah command yang selama ini cukup menyusahkan saya.🙂
Bagaikan mendapat harta karun yang puluhan tahun tersembunyi, sekarang saya bisa melooping command penggantian password ini ke semua server dengan mudah.

Karena kemalasan saya membaca manual, akhirnya baru sekarang saya mengetahui option ini. Padahal sudah jelas – jelas terpampang didalam man passwd berikut:

–stdin This option is used to indicate that passwd should read the new password from standard input, which can be a pipe.

Demikian, semoga sysadmin yang belum tahu bisa mendapat pencerahan yang sama seperti saya.🙂

Salam console.


SOP untuk menghapus LUN pada Linux

June 26, 2013

Bagaimana prosedur yang benar untuk menghapus lun yang sudah tidak terpakai sehingga LUN tersebut dapat dikembalikan ke tim storage?

Biasanya karena LUN ini sudah tidak terpakai, terkadang saya seenaknya saja untuk menghapus lun tersebut tanpa prosedur yang benar.

Saya dapat langsung bilang ke tim storage untuk mereclaim lun tersebut. Yang terjadi adalah, ketika dari sisi storage langsung mencabut lun tersebut maka pada system akan muncul banyak log error lun failed.

Biasanya saya akan mengabaikan log error tersebut karena tahu bahwa lun tersebut memang sudah tidak terpakai.
*see how lazzy I am?🙂

Tapi pesan error ini akan muncul terus menerus sehingga akan memenuhi system log *nyampah. Akibatnya adalah bisa jadi kita melewatkan ketika ada error log yang ternyata penting.

Dan pada suatu kasus pesan error yang muncul terus menerus ini membuat system hang dan reboot. Entah karena kernel yang terus – menerus mendeteksi ada lun yang failed.

Ok, jadi bagaimana sih prosedur yang benar untuk menghapus LUN pada system Linux?

Berikut adalah salah satu yang direkomendasikan oleh RedHat yang saya temukan pada knowledge basenya RedHat.

1. Tutup atau putuskan semua user yang mengakses filesystem tersebut

fuser -cu /old_data
kill (pid)

2. Unmount filesystem tersebut

umount /old_data

3. Hapus device lun tersebut dari LVM

lvremove (lvname)
vgreduce (vgname) (disk name)
pvremove (disk name)

4. Hapus device lun tersebut dari multipath

multipath -ll
multipath -f (lun device)

5. flush any outstanding IO

blockdev --flushbufs device

6. Hapus hba path device lun tersebut
*sdf adalah device lun yang mau dihapus

cat /sys/block/sdf/device/state
echo offline > /sys/block/sdf/device/state
echo 1 > /sys/block/sdf/device/delete

7. Terakhir kita bisa informasikan kepada tim storage untuk mencabut lun tersebut dari system kita.

Maka ketika lun tersebut sudah dihapus dari sisi storage tidak akan lagi muncul pesan error seperti yang saya sebutkan diawal.

System log tetap bersih sehingga kita tetap dapat memonitor bila ada log yang penting.

Semoga bermanfaat.

Salam Console.


Bagaimana mendisable salah satu path multipath

June 13, 2013

Berikut adalah cara yang saya lakukan untuk melakukan testing apakah multipath sudah bekerja dengan baik.
Caranya adalah dengan mendisable salah satu pathnya, dan lihat apakah filesystem masih bisa diakses.

Melihat semua path yang ada:

[root@dudulz-box ~ ]# multipath -ll
mpath2 (360060e801604750000010475000041ee) dm-13 HP,OPEN-V
[size=100G][features=1 queue_if_no_path][hwhandler=0][rw]
\_ round-robin 0 [prio=2][active]
\_ 0:0:0:2 sdc 8:32 [active][ready]
\_ 3:0:0:2 sdf 8:80 [active][ready]
mpath0 (360060e801604750000010475000041ec) dm-11 HP,OPEN-V
[size=100G][features=1 queue_if_no_path][hwhandler=0][rw]
\_ round-robin 0 [prio=2][active]
\_ 0:0:0:0 sda 8:0 [active][ready]
\_ 3:0:0:0 sdd 8:48 [active][ready]
mpath1 (360060e8016047500000104750000019b) dm-12 HP,OPEN-V
[size=100G][features=1 queue_if_no_path][hwhandler=0][rw]
\_ round-robin 0 [prio=2][active]
\_ 0:0:0:1 sdb 8:16 [active][ready]
\_ 3:0:0:1 sde 8:64 [active][ready]

Lihat status salah satu path dari multipath diatas:

[root@dudulz-box ~ ]# cat /sys/block/sdc/device/state
running

Disable salah salah satu path “sdc”

[root@dudulz-box ~ ]# echo offline > /sys/block/sdc/device/state

[root@dudulz-box ~ ]# cat /sys/block/sdc/device/state
offline

Lihat status multipath setelah didisable, statusnya telah berubah menjadi failed.
Setelah itu coba cek apakah filesystem masih bisa diakses.

[root@dudulz-box ~ ]# multipath -ll
mpath2 (360060e801604750000010475000041ee) dm-13 HP,OPEN-V
[size=100G][features=1 queue_if_no_path][hwhandler=0][rw]
\_ round-robin 0 [prio=1][active]
\_ 0:0:0:2 sdc 8:32 [failed][faulty]
\_ 3:0:0:2 sdf 8:80 [active][ready]
mpath0 (360060e801604750000010475000041ec) dm-11 HP,OPEN-V
[size=100G][features=1 queue_if_no_path][hwhandler=0][rw]
\_ round-robin 0 [prio=2][active]
\_ 0:0:0:0 sda 8:0 [active][ready]
\_ 3:0:0:0 sdd 8:48 [active][ready]
mpath1 (360060e8016047500000104750000019b) dm-12 HP,OPEN-V
[size=100G][features=1 queue_if_no_path][hwhandler=0][rw]
\_ round-robin 0 [prio=2][active]
\_ 0:0:0:1 sdb 8:16 [active][ready]
\_ 3:0:0:1 sde 8:64 [active][ready]

Enable kembali pathnya:

[root@dudulz-box ~ ]# echo running > /sys/block/sdc/device/state

[root@dudulz-box ~ ]# cat /sys/block/sdc/device/state
running

[root@dudulz-box ~ ]# multipath -ll
mpath2 (360060e801604750000010475000041ee) dm-13 HP,OPEN-V
[size=100G][features=1 queue_if_no_path][hwhandler=0][rw]
\_ round-robin 0 [prio=2][active]
\_ 0:0:0:2 sdc 8:32 [active][ready]
\_ 3:0:0:2 sdf 8:80 [active][ready]
mpath0 (360060e801604750000010475000041ec) dm-11 HP,OPEN-V
[size=100G][features=1 queue_if_no_path][hwhandler=0][rw]
\_ round-robin 0 [prio=2][active]
\_ 0:0:0:0 sda 8:0 [active][ready]
\_ 3:0:0:0 sdd 8:48 [active][ready]
mpath1 (360060e8016047500000104750000019b) dm-12 HP,OPEN-V
[size=100G][features=1 queue_if_no_path][hwhandler=0][rw]
\_ round-robin 0 [prio=2][active]
\_ 0:0:0:1 sdb 8:16 [active][ready]
\_ 3:0:0:1 sde 8:64 [active][ready]

Salam.


Susahnya menggunakan korn shell

April 10, 2013

Sudah beberapa minggu ini saya mendapat kesempatan bermain – main dengan HP-UX.

Sebagai sysadmin linux, saya ternyata sudah sangat dilenakan oleh kemudahan console linux yang menggunakan shell bash.
Maka ketika berhadapan dengan console yang tidak ada bashnya membuat saya sedikit kesulitan😦

Default shell HP-UX ini adalah ksh. Ksh menggunakan vi-style line editing modes. Tombol arah kanan kiri atas bawah tidak bisa digunakan.

Nah vi style ini juga sudah jarang saya gunakan, karena dilinux saya selalu menggunakan vim.
Vim ini adalah vi yang sudah dienhance fitur – fiturnya sehingga bisa menggunakan tombol arah kanan kiri atas maupun bawah.

Seperti biasa, yang saya lakukan adalah mencari referensi pengoperasian ksh.
Berikut adalah yang saya google temukan:

Menampilkan command line history:
[k] dan [j] -> Tekan tombol Esc dan k untuk melihat history sebelumnya atau Esc dan j untuk melihat history setelahnya.

Pengendalian kursor:

Untuk mulai mengaktifkan pengendalian kursor tekan tombol Esc dahulu baru dilanjutkan dengan tombol berikut:
[h] -> Memindahkan kursor kebelakang atau mundur satu karakter
[l] -> Memindahkan kursor kedepan atau maju satu karakter
[w] -> Memindahkan kursor keawal kata berikutnya atau maju ke setiap awal kata
[b] -> Memindahkan kursor keawal kata berikutnya atau mundur kesetiap awal kata
[x] -> Menghapus huruf tempat dimana kursor berada
[D] -> Menghapus sisa baris dimulai dari huruf tempat dimana kursor berada

Mode Input:

[i] -> Memasukkan huruf ketempat satu karakter dimana kursor berada
[r] -> Menggantikan huruf atau karakter ditempat kursor berada
[R] -> Menggantikan sisa huruf atau karakter dimulai dari tempat kursor berada
[A] -> Menambahkan huruf atau karakter dimulai dari akhir baris

Auto complete:

Siapa bilang ksh tidak ada auto complete, try this!! 🙂
[Esc] [Esc] -> Tekan tombol Esc dua kali untuk Auto complete

Mode Editor:

[v] -> Tekan v untuk masuk ke vi editor

Dan masih banyak lagi perintah – perintah lainnya dapat anda lihat pada link dibawah.

ref: http://st23.org/misc/sysadmin/downloads/reference.card-ksh.programming.pdf

Salam Console.