My Little Daemon™

Simple, FreeBSD, SelinganMay 4, 2008 12:28 pm

Sebagai Administrator suatu network, terkadang kita membutuhkan tool untuk mengetahui host-host mana saja yang UP atau terkoneksi ke jaringan. Namun jika Anda menggunaan *NIX dengan bash shell, ketikkan saja script di bawah ini lalu enter :

for ip in $(seq 1 254); do ping -c 1 192.168.1.$ip>/dev/null; [ $? -eq 0 ] && echo "192.168.1.$ip UP" || : ; done

Contohnya :

handaru@internal19:~$ for ip in $(seq 1 254); do ping -c 1 192.168.1.$ip>/dev/null; [ $? -eq 0 ] && echo "192.168.1.$ip UP" || : ; done

192.168.1.3 UP
192.168.1.5 UP
192.168.1.8 UP
192.168.1.10 UP
192.168.1.16 UP
192.168.1.25 UP
192.168.1.28 UP
192.168.1.33 UP
192.168.1.34 UP
192.168.1.35 UP
192.168.1.37 UP
192.168.1.39 UP
192.168.1.43 UP
192.168.1.44 UP
192.168.1.45 UP
192.168.1.74 UP
192.168.1.100 UP
192.168.1.101 UP
192.168.1.150 UP

Sumber http://www.cyberciti.biz

FreeBSD…mudah, itu saja. 

Dedicated for Light Intermutimedia
Perusahaan Software Pulsa
Middle, C Programming, FreeBSDFebruary 9, 2008 9:58 am

Fungsi ini adalah bagian dari pustaka stdio.h yang berguna untuk memanggil  proses. Bentuk umumnya adalah :

FILE *popen(const char *perintah, const char *tipe);

dimana :

  • *perintah adalah string yang berisi perintah yang hendak dikerjakan.
  • *tipe adalah "r" untuk read-only dan "w" untuk write.

popen() memiliki nilai kembalian berupa stream pointer jika sukses dan NULL untuk error. Untuk menutup fungsi ini kita bisa gunakan perintah :

pclose(FILE *stream_pointer);

Berikut adalah contoh aplikasinya :

$ edit test_popen.c

#include <stdio.h>

main()
{
  FILE *fp;
  char tampil[200]; /* penampung baris-baris tampilan hasil. */

  fp = popen("ls -l", "r"); /* perintah yang diberikan. */

  /* pembacaan baris-baris tampilan hasil. */
  while ( fgets(tampil, sizeof tampil, fp)) /* menggunakan fungsi fgets untuk mendapatkan string [tampil] dari sebuah stream [fp]*/
  {
    printf("%s", tampil); /* lihatlah, tipe tampil adalah string [%s] yang kita dapat dari dari stream pointer fp */
  }
  pclose(fp); /* penutupan */
}

 

$ gcc -o test_popen test_popen.c
$ ./test_popen
total 108
-rw-r–r–  1 handaru  1001    14 Jan  6 22:34 coba
-rwxr-xr-x  1 root     1001  4917 Jan  9 21:32 cobaread
-rw-r–r–  1 root     1001   343 Jan  9 21:32 cobaread.c
-rwxr-xr-x  1 handaru  1001  4734 Aug 29 14:49 hello
-rw-r–r–  1 handaru  1001    58 Aug 29 14:49 hello.c
-rw-r–r–  1 root     1001   154 Dec 19 15:21 killerror.txt
-rw-r–r–  1 root     1001   154 Dec 19 15:27 killerror2.txt
-rw-r–r–  1 root     1001   166 Dec 20 12:43 psaxgrepsendmail.txt
-rw-r–r–  1 root     1001   166 Dec 20 12:28 psaxgrepsenmail.txt
-rw-r–r–  1 root     1001  2991 Dec 20 12:27 psaxoutput.txt
-rw-r–r–  1 root     1001     5 Dec 18 15:42 psin.txt
-rw-r–r–  1 root     1001  2974 Dec 18 15:44 psoutput.txt
-rw-r–r–  1 root     1001    70 Dec 18 15:13 psoutput1.txt
-rw-r–r–  1 root     1001  2974 Dec 20 12:24 pssort.txt
-rwxr-xr-x  1 root     1001  4890 Jan 20 22:39 sistem
-rw-r–r–  1 root     1001   159 Jan 20 22:30 sistem.c
-rwxr-xr-x  1 root     1001  4915 Jan 20 23:00 sistem2
-rw-r–r–  1 root     1001   180 Jan 20 23:00 sistem2.c
-rw-r–r–  1 handaru  1001    40 Jan 16 09:04 so.txt
-rwxr-xr-x  1 handaru  1001  5571 Jan 25 19:19 tes_fork
-rw-r–r–  1 handaru  1001   738 Jan 25 19:01 tes_fork.c
-rwxr-xr-x  1 handaru  1001  4865 Jan 25 16:32 test_execl
-rw-r–r–  1 handaru  1001   103 Jan 25 16:32 test_execl.c
-rwxr-xr-x  1 handaru  1001  5361 Feb  3 13:07 test_exit
-rw-r–r–  1 handaru  1001   770 Feb  3 13:04 test_exit.c
-rwxr-xr-x  1 handaru  1001  5328 Jan 25 19:32 test_fork
-rw-r–r–  1 handaru  1001   535 Jan 28 12:22 test_fork.c
-rwxr-xr-x  1 handaru  1001  5042 Feb  9 10:12 test_popen
-rw-r–r–  1 handaru  1001   309 Feb  9 10:12 test_popen.c
-rwxr-xr-x  1 handaru  1001  5552 Jan 28 13:09 test_wait
-rw-r–r–  1 handaru  1001   582 Jan 28 13:09 test_wait.c
$

FreeBSD…masih ragu-kah dirimu ?

Dedicated for Light Intermutimedia
Perusahaan Software Pulsa

Middle, C Programming, FreeBSDFebruary 3, 2008 12:50 pm

Untuk menghentikan sebuah proses, kita bisa menggunakan fungsi exit(). Fungsi ini berada dalam pustaka unistd.h. Bentuk umum fungsi ini adalah :

void exit(int status) 

dimana status merupakan nilai balikan yang kita kirimkan via fungsi ini. Perjanjian yang banyak digunakan adalah 0 untuk penghentian proses yang sukses dan bukan 0 untuk penghentian proses yang bermasalah. Daftar yang umum digunakan oleh sistem FreeBSD ada di /usr/include/sysexits.h. Namun kita bisa saja mendefiniskan status error kita sendiri. Untuk lebih jelasnya perhatikan contoh berikut, test_exit.c, yang merupakan modifikasi file test_wait.c :

$edit test_exit.c

#include <stdio.h>
#include <unistd.h>         /*fork() dan exit()*/
#include <sys/types.h>      /*pid_t*/

int main()
{
   pid_t nilai_balikan, pid;
   int status;

   nilai_balikan = fork();

   if (nilai_balikan < 0){
        perror("fork");
        exit(1);
        /* CATATAN : perror() menghasilkan sebuah pesan kesalahan pendek pada  standard error yang menjelaskan eroor terakhir yang terjadi ketika sebuah penggilan ke sistem atau fungsi pustaka. */
   }
   else if (nilai_balikan == 0)
      execlp("/bin/ls","ls",0);
   else{
      pid = wait(&status);
      printf("Proses induk dengan PID : %d, telah bersedia menunggu selesainya proses anaknya dengan PID : %d sebelum menampilkan baris ini.\n", getpid(), pid);
      exit(0);
  }
}

$ gcc -o test_exit test_exit.c
$ ./test_exit
coba                    killerror2.txt          psoutput1.txt           so.txt                  test_exit.c
cobaread                psaxgrepsendmail.txt    pssort.txt              tes_fork                test_fork
cobaread.c              psaxgrepsenmail.txt     sistem                  tes_fork.c              test_fork.c
hello                   psaxoutput.txt          sistem.c                test_execl              test_wait
hello.c                 psin.txt                sistem2                 test_execl.c            test_wait.c
killerror.txt           psoutput.txt            sistem2.c               test_exit
Proses induk dengan PID : 696, telah bersedia menunggu selesainya proses anaknya dengan PID : 697 sebelum menampilkan baris ini.
$

FreeBSD…bukan Superman tapi perkasa.

Dedicated for Light Intermutimedia
Perusahaan Software Pulsa

Middle, C Programming, FreeBSDJanuary 28, 2008 12:55 pm

wait() berfungsi untuk memaksa menunggu bagi proses pemanggil [proses induk] atas selesainya eksekusi suatu proses anak sebelum melakukan aktivitas yang lain. Bentuk umum fungsi ini adalah :

int wait(int *status)

terlihat bahwa parameter fungsi ini adalah pointer integer.

Untuk lebih jelasnya kita bisa melihatnya pada contoh berikut [yang merupakan modifikasi file test_fork.c] :

$ edit test_wait.c

#include <stdio.h>
#include <unistd.h>         /*fork()*/
#include <sys/types.h>      /*pid_t*/

int main()
{
   pid_t nilai_balikan, pid;
   int status;

   nilai_balikan = fork();

   if (nilai_balikan < 0)
      fprintf(stderr, "Nilai balikan : %d, berarti fork gagal dieksekusi.\n", nilai_balikan);
   else if (nilai_balikan == 0)
      execlp("/bin/ls","ls",0);
   else{
      pid = wait(&status);
      printf("Proses induk dengan PID : %d, telah bersedia menunggu selesainya proses anaknya dengan PID : %d sebelum menampilkan baris ini.\n", getpid(), pid);
     }
}

$ gcc -o test_wait test_wait.c
$ ./test_wait
coba                    killerror2.txt          psoutput1.txt           so.txt                  test_fork.c
cobaread                psaxgrepsendmail.txt    pssort.txt              tes_fork                test_wait
cobaread.c              psaxgrepsenmail.txt     sistem                  tes_fork.c              test_wait.c
hello                   psaxoutput.txt          sistem.c                test_execl
hello.c                 psin.txt                sistem2                 test_execl.c
killerror.txt           psoutput.txt            sistem2.c               test_fork
Proses induk dengan PID : 676, telah bersedia menunggu selesainya proses anaknya dengan PID : 677 sebelum menampilkan baris ini.
$

Pada contoh di atas jelas terlihat bahwa proses induk PID 676 harus menunggu selesainya proses anak dengan PID 677 yang sedang menjalankan perintah ls sebelum bisa melakukan kegiataan yang lain [printf("Proses induk dengan PID : %d, telah bersedia menunggu selesainya proses anaknya dengan PID : %d sebelum menampilkan baris ini.\n", getpid(), pid);] dengan memanfaatkan fungsi wait(&status). &status sendiri merupakan pointer integer dari status proses anak yang dihasilkan oleh proses induk. Nilai balikannya fungsi wait(&status) adalah integer sehingga bisa dimuatkan ke variabel pid yang bertipe integer yang kemudian memungkinkan kita tampilkan nilainya dengan fungsi printf() dengan %d yang merupakan format penampilan data bertipe integer pada fungsi printf().

FreeBSD…dari awal pun dimungkinkan.

Dedicated for Light Intermutimedia
Perusahaan Software Pulsa

Middle, C Programming, FreeBSDJanuary 25, 2008 7:36 pm

Dengan fungsi fork() memungkinkan sebuah proses dijalankan oleh dua proses identik yang kita kenal sebagai proses parent (induk) dan proses child (anak). Fork yang sukses akan memberikan nilai balikan 0 dan memberikan nilai balikan -1 jika terjadi kegagalan eksekusi fungsi ini.

Untuk lebih jelasnya perhatikan contoh berikut :

#edit test_fork.c 

#include <stdio.h>
#include <unistd.h>         /* pustaka dimana fungsi fork() berada */
#include <sys/types.h>      /* pustaka dimana tipe data pid_t berada */

int main()
{
   pid_t nilai_balikan;

   nilai_balikan = fork();

   if (nilai_balikan < 0)
      fprintf(stderr, "Nilai balikan : %d, berarti fork gagal dieksekusi\n", nilai_balikan);
   else if (nilai_balikan == 0)
      printf("Nilai balikan : %d, berarti fork berhasil dieksekusi dan  membuat proses anak dengan PID : %d\n", nilai_balikan
   else
      printf("Ini proses induk dengan PID : %d\n", getpid());
}

$ gcc -o test_fork test_fork.c
$ ./test_fork
Ini proses induk dengan PID : 766
Nilai balikan : 0, berarti fork berhasil dieksekusi dan  membuat proses anak dengan PID : 767
$

Tipe data pid_t adalah signed integer untuk merepresentasikan PID yang terdapat dalam standar pustaka GNU sys/types.h. dan fungsi getpid() bisa kita gunakan untuk mengetahui PID dari proses yang berjalan [baik proses induk maupun proses anak].

FreeBSD…mendasar dan terpahami.

Dedicated for Light Intermutimedia
Perusahaan Software Pulsa

Simple, C Programming, FreeBSDJanuary 22, 2008 10:15 pm

Fungsi execl() bisa digunakan untuk menjalankan dan menghentikan sebuah proses. Fungsi ini berada dalam pustaka unistd.h. Bentuk umum fungsi ini adalah :

execl(char *path, char *arg0,…,char *argn, 0);

Dimana :

  • path adalah path dari sistem UNIX [baca FreeBSD] dari perintah yang akan diberikan.
  • arg0 adalah string yang mengacu pada path
  • arg1 sampai argn adalah argumen perintahnya
  • 0 adalah NULL terminator yang merupakan argumen yang bertugas memberitahukan kepada sistem C Programming bahwa tak ada lagi argumen yang di-list
  • Penggunaan * pada path dan argumen menandakan bahwa string yang diinputkan pada fungsi ini ditampung dalam pointer
  • Low level fungsi ini pernah kita bahas DI SINI

Berikut adalah contoh aplikasi fungsi execl() untuk menampilkan semua isi direktori aktif dalam format panjang :

$edit test_execl.c

#include <stdio.h>
#include <unistd.h>

main()
{ printf("Files in Directory are:\n");
                 execl("/bin/ls","ls", "-la",0);
}

Pada contoh di atas : /bin/ls adalah path, ls adalah arg0 dan 0 adalah Null terminator.

$ gcc -o test_execl test_execl.c
$ ./test_execl
Files in Directory are:
total 92
drwxr-xr-x  4 handaru  1001   1024 Jan 22 22:22 .
drwxr-xr-x  5 root     wheel   512 Dec 26 13:34 ..
-rw——-  1 handaru  1001      0 Nov 12 13:49 .Xauthority
-rw-r–r–  1 handaru  1001    767 Aug 29 13:42 .cshrc
-rw-r–r–  1 handaru  1001    248 Aug 29 13:42 .login
-rw-r–r–  1 handaru  1001    158 Aug 29 13:42 .login_conf
-rw——-  1 handaru  1001    373 Aug 29 13:42 .mail_aliases
-rw-r–r–  1 handaru  1001    331 Aug 29 13:42 .mailrc
drwxr-xr-x  2 handaru  1001    512 Dec 20 15:45 .mc
drwxr-xr-x  2 handaru  1001    512 Dec 27 13:00 .pgp
-rw-r–r–  1 handaru  1001    797 Aug 29 13:42 .profile
-rw——-  1 handaru  1001    276 Aug 29 13:42 .rhosts
-rw-r–r–  1 handaru  1001    975 Aug 29 13:42 .shrc
-rw-r–r–  1 handaru  1001     14 Jan  6 22:34 coba
-rwxr-xr-x  1 root     1001   4917 Jan  9 21:32 cobaread
-rw-r–r–  1 root     1001    343 Jan  9 21:32 cobaread.c
-rwxr-xr-x  1 handaru  1001   4734 Aug 29 14:49 hello
-rw-r–r–  1 handaru  1001     58 Aug 29 14:49 hello.c
-rw-r–r–  1 root     1001    154 Dec 19 15:21 killerror.txt
-rw-r–r–  1 root     1001    154 Dec 19 15:27 killerror2.txt
-rw-r–r–  1 root     1001    166 Dec 20 12:43 psaxgrepsendmail.txt
-rw-r–r–  1 root     1001    166 Dec 20 12:28 psaxgrepsenmail.txt
-rw-r–r–  1 root     1001   2991 Dec 20 12:27 psaxoutput.txt
-rw-r–r–  1 root     1001      5 Dec 18 15:42 psin.txt
-rw-r–r–  1 root     1001   2974 Dec 18 15:44 psoutput.txt
-rw-r–r–  1 root     1001     70 Dec 18 15:13 psoutput1.txt
-rw-r–r–  1 root     1001   2974 Dec 20 12:24 pssort.txt
-rwxr-xr-x  1 root     1001   4890 Jan 20 22:39 sistem
-rw-r–r–  1 root     1001    159 Jan 20 22:30 sistem.c
-rwxr-xr-x  1 root     1001   4915 Jan 20 23:00 sistem2
-rw-r–r–  1 root     1001    180 Jan 20 23:00 sistem2.c
-rw-r–r–  1 handaru  1001     40 Jan 16 09:04 so.txt
-rwxr-xr-x  1 handaru  1001   4865 Jan 22 22:22 test_execl
-rw-r–r–  1 handaru  1001    123 Jan 22 22:21 test_execl.c
$

FreeBSD…jelas, jelas dan jelas.

Dedicated for Light Intermutimedia
Perusahaan Software Pulsa

Simple, C Programming, FreeBSDJanuary 20, 2008 11:00 pm

Berikut adalah contoh sebuah proses yang menjalankan proses yang lain :

komkecil#edit sistem.c

#include <stdlib.h>
#include <stdio.h>

int main()
{
  printf("Jalankan perintah ps dengan system\n");
  system("ps -ax");
  printf("Selesai.\n");
exit(0);
}

komkecil# gcc -o sistem sistem.c
komkecil# ./sistem
Jalankan perintah ps dengan system
  PID  TT  STAT      TIME COMMAND
    0  ??  WLs    0:00.00 [swapper]
    1  ??  ILs    0:00.02 /sbin/init –
    2  ??  DL     0:00.05 [g_event]
    3  ??  DL     0:00.11 [g_up]
  . . . 
  553  p0  Is     0:00.02 -sh (sh)
  555  p0  I      0:00.02 su
  556  p0  S      0:00.09 _su (csh)
  606  p0  S+     0:00.00 ./sistem
  607  p0  S+     0:00.01 sh -c ps -ax
  608  p0  R+     0:00.00 ps -ax
Selesai.
komkecil#

Pada contoh program di atas, dia membuat satu proses ./sistem yang kita buat dengan bahasa C [PID 606] yang meminta shell [PID 607] yang kemudian shel tersebut meminta sistem FreeBSD menampilkan proses ps -ax [PID 608].

Dalam hal ini program sistem kita memanfaatkan fungsi pustaka system. Karena perintah ps -ax bukanlah sebuah backgroud process, maka progam sistem kita menunggu hingga ps -ax menampilkan otputnya ke layar, baru progam sietem menyatakan Selesai. Sebelum sistem menjalankan perintah ps -ax hingga selesai, program sistem tidak bisa menerima tugas [task] yang lain.

Ceritanya akan lain jika proses yang diminta adalah sebuah backgroud process. Baiklah, ubah sedikit file sistem.c menjadi sistem2.c seperti berikut :

komkecil#edit sistem2.c 

#include <stdlib.h>
#include <stdio.h>

int main()
{
  printf("Jalankan perintah ps dengan system\n");
  system("ps -ax &");
  system("pwd &");
  printf("Selesai.\n");
exit(0);
}

komkecil# gcc -o sistem2 sistem2.c
komkecil# ./sistem2
Jalankan perintah ps dengan system
Selesai.
/usr/home/handaru
komkecil#   PID  TT  STAT      TIME COMMAND
    0  ??  WLs    0:00.00 [swapper]
    1  ??  SLs    0:00.02 /sbin/init –
    2  ??  DL     0:00.11 [g_event]
    3  ??  DL     0:00.16 [g_up]
  . . .  
  553  p0  Is     0:00.02 -sh (sh)
  555  p0  I      0:00.02 su
  556  p0  S+     0:00.12 _su (csh)
  684  p0  R      0:00.00 ps -ax
  686  p0  R      0:00.00 sh -c pwd &

komkecil#

Sekarang bisa Anda lihat bahwa program kita [sistem2] meminta sistem FreeBSD menjalankan perintah ps -ax namun sebagai backgroud process [ps -ax &] sehingga program sistem2 kita tidak perlu menunggu program ps -ax & menyelesaikan penampilannya ke layar, sistem2 sudah bisa menampilkan perintah pwd &. Bahkan sistem2 bisa menganggap tugasnya telah selesai [Selesai.] ketika hasil perintah ps -ax & dan pwd & belum tertampil di layar :

komkecil# ./sistem2
Jalankan perintah ps dengan system
Selesai.
/usr/home/handaru
komkecil#   PID  TT  STAT      TIME COMMAND
    0  ??  WLs    0:00.00 [swapper]
    1  ??  SLs    0:00.02 /sbin/init –
. . . 

FreeBSD…asal-usulnya jelas.

Dedicated for Light Intermutimedia
Perusahaan Software Pulsa

Simple, FreeBSD, SelinganJanuary 18, 2008 8:14 am

Pada posting terdahulu, saya lupa menjelaskan bagaimana cara setting default gateway dan DNS jika menggunakan FreeBSD sebagai client Telkom Speedy Unlimited. Berikut dua langkah mudahnya :

  1. # edit /etc/rc.conf lalu tambahkan baris : defaultrouter="192.168.1.1" lalu reboot.
  2. # edit /etc/resolv.conf lalu buat menjadi seperti ini :

    search telkom.net.id
    nameserver 202.134.1.10
    nameserver 202.134.0.15

FreeBSD…kalau bisa mudah, mengapa dibuat susah ?

Dedicated for Light Intermutimedia
Perusahaan Software Pulsa

Simple, FreeBSD, SelinganJanuary 17, 2008 6:52 pm
Ketika login ke sistem FreeBSD, adakalanya kita perlu berganti user untuk melakukan suatu aktivitas yang membutuhkan hak akses lebih tinggi atau sebaliknya, menurunkan hak akses user login karena sudah tidak membutuhkan suatu hak akses tertentu. Untuk hal ini kita bisa menggunakan perintah su [switch user]. Yang perlu diingat ketika berpindah user, hak akses berikutnya yang terbawa adalah user akhir, namun direktori kerja/aktif tetap berada pada direktori kerja user sebelum switch. Tentu saja pastikan dulu paket sudo sudah terinstall di sistem FreeBSD kita.
 
$ pwd
/usr/home/handaru
$ su sakti
otp-md5 496 ko0807 ext
Password:
$ pwd
/usr/home/handaru
 
Untuk keluar dari user login terakhir, kembali ke user login semula, bisa digunakan perintah exit.
 
Dan…jika kita bermaksud naik ke level hak akses root [super user], kita bisa memasukkan user login kita ke group wheel :
 
# edit /etc/group
 
Record teratas berikut yang perlu di-edit :
 
wheel:*:0:root,handaru 
 
Baiklah, untuk memakainya kita bisa bisa dengan perintah su saja atau su root :
 
$ su root
Password:
komkecil# exit
exit
$ su
Password:
komkecil# pwd
/usr/home/handaru
 
Keberadaan su root [super user] ini sangat bermanfaat terutama jika kita me-remote server FreeBSD kita via SSH yang konfigurasi defaultnya di /etc/ssh/sshd_config adalah #PermitRootLogin no. Kita bisa login dengan user standar, lalu su aja, maka hak akses root berada dalam di ujung jari.
 
FreeBSD…tentu saja fleksibel.
 
Dedicated for Light Intermutimedia
Perusahaan Software Pulsa
 
Middle, FreeBSD 3:42 pm

Tabel proses adalah sebuah struktur data atribut-atribut yang berkenaan dengan proses-proses yang sedang diberjalan. Atribut-atribut itu meliputi PID, tipe terminal, status, waktu dan perintahnya itu sendiri. Untuk menampilkan proses-proses yang sedang berjalan, dapat digunakan perintah ps. Karena UNIX [baca FreeBSD] adalah sistem operasi multi user yang konsisten dalam memberlakukan hak ases atas suatu resource sistem oleh seorang user, maka proses-proses yang bisa  dijalankan oleh masing-masing user juga berbeda. Berikut untuk user standar :

$ ps
  PID  TT  STAT      TIME COMMAND
  406  p0  Ss     0:00.02 -sh (sh)
  408  p0  R+     0:00.00 ps

Bandingkan dengan jika kita login dengan root :

# ps
  PID  TT  STAT      TIME COMMAND
  539  v0  Ss+    0:00.01 /usr/libexec/getty Pc ttyv0
  540  v1  Ss+    0:00.01 /usr/libexec/getty Pc ttyv1
  541  v2  Ss+    0:00.01 /usr/libexec/getty Pc ttyv2
  542  v3  Ss+    0:00.01 /usr/libexec/getty Pc ttyv3
  543  v4  Ss+    0:00.01 /usr/libexec/getty Pc ttyv4
  544  v5  Ss+    0:00.01 /usr/libexec/getty Pc ttyv5
  545  v6  Ss+    0:00.01 /usr/libexec/getty Pc ttyv6
  546  v7  Ss+    0:00.01 /usr/libexec/getty Pc ttyv7
  534 con- S      0:00.00 sh /etc/rc autoboot
  535 con- S      0:00.00 logger -p daemon.notice -t fsck
  537 con- S      0:00.00 sh /etc/rc autoboot
  549  p0  S      0:00.02 su
  550  p0  S      0:00.04 _su (csh)
  553  p0  R+     0:00.00 ps

Baiklah kita mulai dengan menjelaskan atribut dan record di atas. PID boleh dianggap sebagai indeks dari proses-proses yang berjalan [baca pula keterangan perihal PID DI SINI]. TT adalah tipe terminal yang digunakan untuk mengeksekusi. v0 artinya virtual console mesin FreeBSD nomor yang pertama, v1 adalah virtual console kedua dan seterusnya. Suatu proses jika tak menemukan console terminal yang bisa digunakannya, dia menggunakan con-. p0 adalah pseudo terminal pertama. Pseudo terminal biasanya digunakan untuk menyiapkan terminal bagi X Windows system atau untuk switch user [su]. Untuk status akan kita bahas pada kesempatan lain ketika kita mulai membuat program aplikasi sendiri dimana untuk berjalannya dia membutuhkan alokasi proses.

Berikutnya, untuk menampilkan semua proses yang berjalan di sistem, termasuk proses yang tak memiliki controlling terminal, bisa digunakan opsi -x. Untuk menampilkan semua proses oleh semua user, dapat diberikan opsi -a. Dan untuk menampilkannya dalam format panjang, opsi -l bisa ditambahkan.

# ps -axl
  UID   PID  PPID CPU PRI NI   VSZ   RSS MWCHAN STAT  TT       TIME COMMAND
    0     0     0   0  12  0     0     0 -      WLs   ??    0:00.00 [swapper]
    0     1     0   0   8  0   772   416 wait   ILs   ??    0:00.02 /sbin/init
    0     2     0   0  -8  0     0     8 -      DL    ??    0:00.12 [g_event]
    0     3     0   0  -8  0     0     8 -      DL    ??    0:00.15 [g_up]
    0     4     0   0  -8  0     0     8 -      DL    ??    0:00.20 [g_down]
    0     5     0   0   8  0     0     8 -      DL    ??    0:00.00 [thread tas
    0     6     0   0   8  0     0     8 -      DL    ??    0:00.00 [acpi_task_
    0     7     0   0   8  0     0     8 -      DL    ??    0:00.00 [acpi_task_
    0     8     0   0   8  0     0     8 -      DL    ??    0:00.00 [acpi_task_
    0     9     0   0   8  0     0     8 -      DL    ??    0:00.00 [kqueue tas
    0    10     0   0 -16  0     0     8 audit_ DL    ??    0:00.00 [audit_work
    0    11     0  48 171  0     0     8 -      RL    ??   37:29.75 [idle]
    0    12     0   0 -32  0     0     8 -      WL    ??    0:02.18 [swi4: cloc
    0    13     0   0 -36  0     0     8 -      WL    ??    0:00.00 [swi3: vm]
    0    14     0   0 -44  0     0     8 -      WL    ??    0:00.04 [swi1: net]
    0    15     0   0 -16  0     0     8 -      DL    ??    0:00.11 [yarrow]
    0    16     0   0 -28  0     0     8 -      WL    ??    0:00.00 [swi5: +]
    0    17     0   0 -40  0     0     8 -      WL    ??    0:00.00 [swi2: camb
    0    18     0   0 -24  0     0     8 -      WL    ??    0:00.00 [swi6: task
    0    19     0   0 -24  0     0     8 -      WL    ??    0:00.00 [swi6: Gian
    0    20     0   0 -52  0     0     8 -      WL    ??    0:00.00 [irq9: acpi
    0    21     0   0 -80  0     0     8 -      WL    ??    0:00.00 [irq16: cbb
    0    22     0   0 -16  0     0     8 cbb cv DL    ??    0:00.00 [cbb0]
    0    23     0   0 -16  0     0     8 cbb cv DL    ??    0:00.00 [cbb1]
    0    24     0   0 -64  0     0     8 -      WL    ??    0:00.00 [irq17: uhc
    0    25     0   0   8  0     0     8 usbevt DL    ??    0:00.00 [usb0]
    0    26     0   0   8  0     0     8 usbtsk DL    ??    0:00.00 [usbtask]
    0    27     0   0 -64  0     0     8 -      WL    ??    0:00.00 [irq18: uhc
    0    28     0   0   8  0     0     8 usbevt DL    ??    0:00.00 [usb1]
    0    29     0   0 -64  0     0     8 -      WL    ??    0:00.00 [irq19: ehc
    0    30     0   0   8  0     0     8 usbevt DL    ??    0:00.00 [usb2]
    0    31     0   0 -68  0     0     8 -      WL    ??    0:00.04 [irq20: fxp
    0    32     0   0 -64  0     0     8 -      WL    ??    0:00.05 [irq14: ata
    0    33     0   0 -64  0     0     8 -      WL    ??    0:00.00 [irq15: ata
    0    34     0   0   8  0     0     8 usbevt DL    ??    0:00.00 [usb3]
    0    35     0   0 -64  0     0     8 -      WL    ??    0:00.00 [irq23: uhc
    0    36     0   0   8  0     0     8 usbevt DL    ??    0:00.00 [usb4]
    0    37     0   0   0  0     0     8 tzpoll DL    ??    0:00.19 [acpi_therm
    0    38     0   0   0  0     0     8 coolin DL    ??    0:00.00 [acpi_cooli
    0    39     0   0  -8  0     0     8 -      DL    ??    0:00.01 [fdc0]
    0    40     0   0 -48  0     0     8 -      WL    ??    0:00.00 [swi0: sio]
    0    41     0   0 -60  0     0     8 -      WL    ??    0:00.00 [irq7: ppc0
    0    42     0   0 -60  0     0     8 -      WL    ??    0:00.00 [irq1: atkb
    0    43     0   0 -16  0     0     8 psleep DL    ??    0:00.00 [pagedaemon
    0    44     0   0  20  0     0     8 psleep DL    ??    0:00.00 [vmdaemon]
    0    45     0   0 171  0     0     8 pgzero DL    ??    0:00.28 [pagezero]
    0    46     0   0 -16  0     0     8 psleep DL    ??    0:00.02 [bufdaemon]
    0    47     0   0  20  0     0     8 syncer DL    ??    0:00.10 [syncer]
    0    48     0   0  -4  0     0     8 vlruwt DL    ??    0:00.01 [vnlru]
    0    49     0   0 -16  0     0     8 sdflus DL    ??    0:00.02 [softdepflu
    0    50     0   0  12  0     0     8 -      DL    ??    0:00.18 [schedcpu]
    0   141     1 172  20  0  1252   728 pause  Is    ??    0:00.00 adjkerntz -
    0   253     1 172 117  0   516   376 select Is    ??    0:00.00 /sbin/devd
    0   282     1   0  96  0  1376  1028 select Ss    ??    0:00.03 /usr/sbin/s
    0   355     1   0  96  0  1288   824 select Ss    ??    0:00.01 /usr/sbin/u
    0   396     1   0  96  0  3524  2668 select Is    ??    0:00.01 /usr/sbin/s
    0   402   396   5   4  0  6276  3272 sbwait Is    ??    0:00.09 sshd: handa
 1001   405   402   1  96  0  6260  3256 select S     ??    0:00.09 sshd: handa
    0   409     1   0  96  0  3504  3048 select Ss    ??    0:00.09 sendmail: a
   25   413     1   0  20  0  3384  2808 pause  Is    ??    0:00.01 sendmail: Q
    0   429     1   0   8  0  1388  1100 nanslp Ss    ??    0:00.02 /usr/sbin/c
   88   548   472   0  20  0 57300 26132 kserel S     ??    0:02.08 /usr/local/
    0   539     1  77   5  0  1344   952 ttyin  Is+   v0    0:00.01 /usr/libexe
    0   540     1  77   5  0  1344   952 ttyin  Is+   v1    0:00.01 /usr/libexe
    0   541     1  77   5  0  1344   952 ttyin  Is+   v2    0:00.01 /usr/libexe
    0   542     1  77   5  0  1344   952 ttyin  Is+   v3    0:00.01 /usr/libexe
    0   543     1  77   5  0  1344   952 ttyin  Is+   v4    0:00.01 /usr/libexe
    0   544     1  77   5  0  1344   952 ttyin  Is+   v5    0:00.01 /usr/libexe
    0   545     1  77   5  0  1344   952 ttyin  Is+   v6    0:00.01 /usr/libexe
    0   546     1  77   5  0  1344   952 ttyin  Is+   v7    0:00.01 /usr/libexe
   88   472     1  77   8  0  1728  1376 wait   I    con-   0:00.02 /bin/sh /us
 1001   406   405   0   8  0  1756  1372 wait   Is    p0    0:00.02 -sh (sh)
    0   549   406   0   8  0  1776  1404 wait   I     p0    0:00.02 su
    0   550   549   0  20  0  4668  2936 pause  S     p0    0:00.05 _su (csh)
    0   648   550   0  96  0  1480   968 -      R+    p0    0:00.00 ps -axl

Untuk opsi perintah ps yang lain, monggo di-man ps. Terakhir untuk kali ini, jika Anda ingin menghentikan suatu proses, maka Anda bisa melakukan dengan perintah kill diikuti dengan PID proses tersebut. 

FreeBSD…feel free.

Dedicated for Light Intermutimedia
Perusahaan Software Pulsa