//

Thursday, October 11, 2012

Nice & Renice: manage the priority of processes

With nice and renice you can control the priority each new process given.

Each process is given an nice number which represents his priority among other processes in the system.
The default nice number given to process is 0

The range of nice numbers is -20 to 19.
-20 is the "highest" priority number. If you want to give your process the highest priority, give it the nice number minus 20
19 is the lowest. it might take time for your process to start running (if at all).

now lets see some examples:

1. Set Nice Number

nice  -n 19  ./scriptos
In this example I started my script "scriptos" with the nice number 19.
I can check the actual priority of the process in two ways:

ps  axl  |  grep  scriptos
top
The priority will be under PRI column.

2. Change Nice Number

You can change the priority of your process by changing the nice number with renice.
Lets look on the following example:

renice  -n  12  474
12 - the new nice number of the scriptos (instead of 19).
474 - the PID of scriptos.




Tuesday, October 2, 2012

8 Tar Examples You Should know

Hey readers,

Today i'm gonna show you some tar command examples.

When created, tar was used for data archiving on tapes.
today we use tar to collect different kinds of files together. the tar files themselves also know as tar balls

Lets start with simple example:

here the content of the directory I use for this example



total 0
-rw-r--r--. 1 root root 0 Sep 30 16:13 file1
-rw-r--r--. 1 root root 0 Sep 30 16:13 file2
-rw-r--r--. 1 root root 0 Sep 30 16:13 file3


1. Create Tar File


tar  -cvf  all.tar  file1  file2  file3

In this example we creating tar file with the following flags:

c - create
v - verbose. gives us more outpout about the process of creating the tar file
f - file (instead of tape for example)

all.tar will be our new tar file (tarball) which include the rest of files - file1, file2 and file3

we could use long options like create verbose and files and we also could separate them: -c -v -f


2. List the contents of a tar file

tar  -tf  all.tar

The -t option (which means table of contents) will show us which files are included in a specific tar file.
in this example the output will be:

file1
file2
file3

for long list, you will might want to use the -v option (verbose)

3. Create compressed tar archive- gzip,bz2 

for gzip:

tar   zcvf  all_files.tgz  file*
This will create an tar archive and compress is with gzip. Its the same as tar.gz file.
the z here means compress it with gzip

for bzip2:

tar   jcvf  all_files.tbz file*
Same example, only this time we using bzip2 compression. Its the same sa tar.bz2 file.
the j means use bzip2

4. Untar a tar file

I find myself more often extract files from tar files than create them. Here how you should extract files from the tar file "all.tar"

tar  xvf  all.tar
You could use the -C option for diffrent extract location.


5. Append files to tar file

You can always update your tar file by adding new files to it.
Suppose we created new file called "luigi". lets add "luigi" to tar file called "mario"


tar  rvf  mario.tar  luigi
We used the option -r to append the file (you can use the long option, --append).


6. Move entire directory tree with tar

This is very popular usage of tar. Lets see how it looks:


tar  cf  -  * |  (cd  /some_dir  && tar xf - )
1. Creates tar of your current directory (You can choose any path you want)
2. Opening new sub shell and changing to the destination directory
3. Extracts the tar from first stage in destination directory

*note: you can just use the -C option. but in older versions of tar this option does not exists


7. Exclude files when creating tar

Lets assume we got anther file in our directory that named file101
We want that every file in our directory will archived except file101:


tar  cvf  all_files.tar  --exclude='file101'  *
You can also use list of files with -X option

8. Extract specific file from tarball

Sometimes you'll want to extract one particular file from a tar file.
you can just specify the file name to get that done:


tar  xvf  all_files.tar  file1 
This command will extract only file1 from the tar.

That's it for this post.
Hope you'll find this useful.

Sunday, September 30, 2012

3 frequently asked questions about SSH

Open SSH
Hello Everyone,

Welcome to my first post in English (well, you can say its the second one). 

Today I'm gonna talk about three frequently asked questions i get on my job about SSH.

For those of you who dont familiar with the open ssh suite, I recommend you read about it here: http://www.openssh.org/


1. I get "connection refused" via ssh. How to solve this error?

first of all, check if the sshd daemon is running on the remote computer. You can do with following command:

service sshd status

you should get something like: "openssh-daemon is running"
If you getting something different you might found the problem. you can start the service like that:

service sshd start
I recommend you use ssh with the -v option which means "verbose". you will get more information about the command you trying.

try checking the status of ssh ports with:

netstat -tlp | grep ssh
if the iptables is on or any other kind of firewall, that could be anther reason for "connection refused".
you could also try to search the logs for something useful: /var/logs/messages 

2. How to use SSH for remotely executing commands?

Well, this answer is quite simply. for example the following will reboot the remote computer mario

ssh root@mario reboot
I use this kind of commands for checking logs on remote computer. It can be very useful.
Be aware that you might asked for password, which leads us for the next question:


2. How to use SSH without password?

when using ssh for remote actions (connect, command execution) the system will prompt you for password.
you can cancel the prompt and connect without password!.
Its very useful for sysadmins who works quite often on remote servers.

there are few simple steps for it to be done:

1. on the local computer:

ssh-keygen 
Press Enter key for each default option.
This is will create public and private key pair.

2. make sure on the remote computer there is a direcotory named .ssh in the user directory. if not create it

3. next copy the public key to the remote computer:

scp  ~/.ssh/id_rsa.pub  remote_linux:~/.ssh/
4. connect without password to the remote computer! =)

Thats it for this post.
Hope you will find this info helpful.

Happy Sukkot Holiday =)



Thursday, September 27, 2012

10 פקודות Find שפשוט חייבים להכיר

לינוקס זה קבצים. כך תמיד היה. רוב הדברים במערכת שלנו הם קבצים - devices, links, sockets ועוד.
לכן תמצאו את הכלי find כשימושי במיוחד בעבודה שלכם עם מערכת ההפעלה.

בפוסט הזה אני אנסה לתת לכם טעימה קטנה מfind עם 10 דוגמאות שחייבים להכיר =)

lets go

1. שימוש בסיסי

לפני שאננו קופצים למים העמוקים בואו נראה דוגמה בסיסית לשימוש בfind:

find  /  -name "*.txt" 
אז מה בעצם אנחנו רואים כאן?

/ הוא המיקום שממנו אנו רוצים להתחיל. שימוש נפוץ נוסף הוא פשוט לשים נקודה. הכוונה בנקודה היא המקום בו אנו נמצאים עכשיו.

name- אומר שהביטוי הבא הוא חלק מהשם של הקובץ (או השם כולו) שאנו רוצים לחפש.
בדוגמה הזאת השתמשתי בWildCards. הכוונה בכוכבית היא 0 תווים או יותר ולא משנה באיזה תו מדובר.
מה שאנחנו מחפשים כאן זה למעשה את כל הקבצים שמסתיימים בtxt - דרך שימושית למצוא את כל הקבצים מסוג מסויים.


2. זמן רבותיי, זמן

לעיתים קרובות נרצה לדעת אילו קבצים שונו היום, אילו לפני חודש ואולי רק יומיים ומעלה.  את כל אלה ויותר נוכל לבדוק באמצעות find

find /tmp -mtime 2
בדוגמה אנו מחפשים את כל הקבצים ששונו לפני יומיים בדיוק. ניתן להשתמש בסימנים + - כדי לחפש קבצים ותיקיות ששונו לפני יותר מיומיים או פחות מיומיים.

אופציות חשובות נוספות הן:
atime - access time למעשה הזמן שבו נעשה שינוי בקובץ שלא בתוכן שלו.
ctime - change time הזמן שבו השתנו מאפייני הקובץ כמו הרשאות, metadata וכו'


3. הרשאות

find מאפשרת לנו לחפש גם קבצים עם הרשאות מסויימות

find  . -perm 646
בדוגמה הנ"ל אנו מחפשים את כל הקבצים עם הרשאות קריאה וכתיבה לowner ולothers והרשאות קריאה לgroup.

באמצעות not- ניתן למצוא את כל הקבצים שאין להם את ההרשאות הנ"ל.

בנוסף ניתן לחפש בצורה סימבולית. למשל  



find  . -perm -ug=rwx

4. סוג קובץ

לפעמים המטרה שלנו בחיפוש היא לאו דווקא למצוא קובץ רגיל. לעיתים נרצה לחפש תיקיות ובפעמים אחרות block device. לכן חשוב להכיר איך לחפש גם סוגי קבצים אחרים.


find /var -type d 

בדוגמה הנ"ל אנחנו מחפשים את כל התיקיות תחת var/
כדי ללמוד על סוגים נוספים ניתן להסתכל בדפי הman של find


5. חפש ובצע

אחת מהאופציות החזקות (ומהמסוכנות) שיש לfind להציע זאת אופציית הexec
exec מאפשרת לנו לבצע כל פעולה שנרצה על הקבצים שמצאנו בעת החיפוש


find ~ -name *.txt -exec rm -f {} \;
בדוגמה הנ"ל אנו מחפשים את כל הקבצים שמסתיימים בtxt ולאחר מכן מוחקים את אותם קבצים.
זאת דוגמה לשימוש מסוכן בפקודה. אין לדעת מה נעלה בעת החיפוש. לכן יש לשים לב ולנסות לעשות את זה בזהירות. בדוגמה הזאת למשל, הייתי שם i- ולא f-


6. קצת עומק

בברירת מחדל find מחפש בכל תתי התיקיות בנתיב שאנו מציינים.
כדי להגביל את עומק החיפוש ניתן לציין את האפשרות maxdepth


find / -maxdepth 2 -name "mario"
maxdepth 2 פירושו חפש בנתיב שצויין ושלב אחד למטה. כך למשל הוא יחפש גם בתיקייה etc/ אך לא מעבר לכך.
ניתן להתחיל חיפוש גם בעומק מסויים (כלומר לא מהנתיב שצויין) עם האפשרות mindepth


7. חדש יותר

מקודם ציינתי שניתן לחפש לפי זמן מסויים שקובץ נערך או בוצעה גישה אליו. ניתן לבצע חיפוש יותר חכם בהקשר הזה של מודיפקציה של קבצים.


find . -newer file1


הפקודה תחפש בנתיב הנוכחי את כל הקבצים ששונו לאחר זמן השינוי של file1
שימושי במקרה ואתם רוצים לראות את השינויים האחרונים בתיקייה מסויימת.

8. גודל

לפעמים נרצה לאתר את הקבצים הכי גדולים בעץ קבצים שלנו על מנת לפנות כמה שיותר מקום. האופציה size מאוד שימושית במקרה הזה:


find /tmp -size +38k 

כאן אתם יכולים לראות דוגמה לחיפוש של קבצים מעל 38 קילובייט. ניתן לחפש לפי גדלים שונים. M גדולה למשל ייחפש לנו בגדלים של Megabytes

9.   Iname

לינוקס היא case sensitive. כלומר הקובץ file והקובץ File הם קבצים שונים בתכלית.
לא תמיד ברור לנו מה שם הקובץ שאנחנו מחפשים. גם כשאנחנו כבר יודעים איזה קובץ אנחנו מחפשים, לא תמיד נהיה בטוחים איך הוא מאויית (אות גדולה בהתחלה? הכל אותיות קטנות? גדולות?) בשביל זה בדיוק יש את iname


find / -iname data
בדוגמה הנ"ל אנחנו מחפשים את כל הקבצים שנקראים data. זה לא משנה אם הם רשומים כDATA או Data. 
find ימצא אותם בכל מקרה.

10. משתמשים וקבוצות

נניח שמשתמש מסויים עזב את הארגון שלנו ואנחנו רוצים לוודא שכל הקבצים ששייכים לו נמחקו מהאחסון.
find מאפשר לנו לחפש גם לפי שיוך קבצים למשתמש וקבוצה מסויימת.


find /users/doron -uid 500 -group doron

נניח שהuid של doron הוא 500 וגם של הקבוצה ששמה כמו שם המשתמש (doron). בדוגמה אנו מחפשים את כל הקבצים ששייכים למשתמש doron ולקבוצה שלו. find מאפשרת לנו לחפש עם האפשרויות uid וgid, ומצד שני גם מילולית עם user וgroup.

מספר טיפים

לעיתים תתקלו בדברים לא רצויים עם הפקודה find.

אחת מה"תקלות" הנפוצות בעבודה עם find היא חוסר הרשאות למיקום מסויים במערכת שמוציא לנו שגיאות יחד עם הפלט של החיפוש. כדי לסנן את השגיאות הללו מומלץ להשתמש בredirection כך:

find / -name "*.mkv" 2> /dev/null

דבר נוסף שנרצה לעשות לעיתים קרובות הוא לחפש במספר מקומות בו זמנית. כדי לעשות את זה פשוט מפרידים בין המקומות באמצעות רווח.


find /tmp  /var/log  /home/arie -name log

זהו. זה הכל להפעם.
ממליץ לכם לקרוא קצת יותר על find בtdlp או בדפי הman כדי לקבל מושג יותר טוב על מלוא היכולות של הכלי הזה.

שתהיה חופשה נעימה וחג שמח =)




Monday, September 10, 2012

איך להציג מידע על המערכת הפעלה והקרנל

שלום לכולם,

פקודה שתציג לנו מידע על המערכת שבה אנו משתמשים יכולה להיות שימושית מאוד, במיוחד בסביבה בה יש לנו עשרות ולפעמים אף מאות שרתים הנבדלים ביניהם במערכות ההפעלה.

היום אני אראה לכם מספר פקודות שיעזרו לכם לזהות את המערכת הפעלה בה אתם משתמשים.

שימו לב - הפקודות שמתוארות בפוסט נוסו על מערכת ההפעלה red hat. הכלי uname הוא כלי נפוץ שנמצא כמעט בכל מערכת הפעלה לינוקס אחרת שקיימת כיום.

ניגש למלאכה:

גרסת ההפצה של Red Hat

אצלי בעבודה קיימות גרסאות רבות של Red Hat וכיוון שיש הבדל משמעותי ביניהן אני מוצא את עצמי הרבה פעמים משתמש בפקודה הבאה:

cat /etc/redhat-release
פלט לדוגמה:

Red Hat Enterprise Linux Server release 6.2 (Santiago)

שם המחשב שלכם

רוצים לדעת לאיזה מחשב אתם מחוברים עכשיו? הפקודה הבאה (מקבילה לפקודה hostname) תציג לכם את שם המחשב והdomain בו אתם נמצאים:

uname -n
פלט לדוגמה:


localhost.local

הצגת כל המידע

לרוב, לא נרצה לזכור את השימוש של כל אופציה ומה בדיוק היא מציגה.
הדרך הקצרה והיעילה ביותר היא פשוט להציג הכל עם האפשרות a-

uname -a 
פלט לדוגמא:

Linux mario.domain 2.4.12-122.2.1.el6.x86_64 #1 SMP Tue AUG 22 12:26:34 EST 2012 x86_64 x86_64 x86_64 GNU/Linux

מידע על ה-Kernel

כדי למצוא מידע ספציפי על גרסת השחרור של הKernel יש להשתמש באפשרות r-

uname -r
על מנת לראות את כל האפשרויות של הפקודה ממליץ לקרוא את הman שלה:

man uname

 מספר אפשרויות נוספות שאולי יועילו לכם:


uname -p = processor type
uname -o = operating system
uname -i = hardware platform
uname -m = machine hardware name


עד הפעם הבאה =)

Monday, August 27, 2012

Hard Link

hard link של קובץ הוא בסופו של דבר שם נוסף לאותו קובץ במיקום כלשהו בfilesystem שלנו.
כלומר, כל שינוי שאני אעשה לקובץ א' יתבטא גם בקובץ קובץ ב' במידה ויש ביניהם קשר של hard link.

איך יוצרים בכלל hard link?

ln filea fileb
כך נוצר לנו hard link בשם fileb לקובץ filea.

יש לי בתיקייה קובץ מסויים בשם turtle. איך אדע אם לקובץ יש hard links נוספים במערכת?
בקלות - הפקודה ls -l או בשימוש היותר נפוץ שלה היום ll תציג לנו בשדה השני את מספר הhard links


המספר 1 מציין שקיים רק הקובץ עצמו, ללא hard links.

  • לא ניתן ליצור hard links בין fs שונים
מספר פקודות למציאת כל הhard links תחת fs מסויים:

טוב אז הראשונה והאהובה עלי היא הפקודה הבאה

find . -xdev -samefile filea

הנקודה בפקודה מציינת להתחיל את החיפוש מהמיקום הנוכחי
samefile פירושו תמצא לי את אותם הקבצים כמו הקובץ filea או במילים אחרות תמצא לי את הhard links שלו.

דרך נוספת:

find . -type f -links +1
הפקודה תמצא קבצים עם יותר מhard link אחד. כלומר hard link נוסף שהוא לא הקובץ עצמו.
ניתן לציין את הפקודה ללא סימן + ואז הפקודה תמצא קבצים עם כמות מדוייקת של hard links. כן, אפשר גם עם מינוס.

כיצד מהסתכלות בלבד ניתן לראות מהפלט של הפקודה ls הם אותם קבצים?
בעזרת i-node number. אותו מספר שמייצג את הקובץ בfilesystem הוא מספר זהה לכל הקבצים שהם hard links אחד של השני. 

הפלט של הפקודה ls -li יוציא לנו את מספר הinode של הקובץ:



כאן אנו רואים שלקבצים turtle & dog יש את אותו inode number שהוא 41. כלומר הם אותם קבצים. 
ניתן גם לראות שהcount של hard links של כל אחד מהם הוא 2 מה שרק מאשש את הטענה הקודמת.

ניתן בעזרת פקודת find למצוא קבצים לפי מספר inode שזו למעשה דרך נוספת למצוא את כל הhard links של קובץ מסויים:

type . -xdev -inum 546

הפקודה תמצא לנו את כל הקבצים להם יש את מספר הinode שהוא 546.

מקווה שהשכלתם. 

עד הפעם הבאה.

Saturday, May 19, 2012

קצת על Filesystems

שלום לכולם,

עבר קצת יותר זמן משתכננתי מאז הפוסט האחרון אבל אני כאן עם נושא חדש לגמרי. 
הפעם אני אציג מספר פקודות ודברים ששווה להכיר בכל מה שנוגע לFilesystems, ממש על קצה המזלג למתחילים בלינוקס.

אז נתחיל טוב?

  • Mount - תציג לנו את ה Filesystems במערכת שכרגע למעלה

הפלט של mount
פקודה בסיסית שכל אדמין לינוקס חייב להכיר. למה זה שימושי?

  1. להבין איך עץ המערכת בנוי ועל איזה דיסק כל מחיצה יושבת
  2. אם יש לנו בעיית מקום או הרשאות לקריאה/כתיבה זה ייתן לנו מידע שיעזור לנו לפתור את הבעיה
  3.  לראות מה סוג מחיצה מסוימת
ועוד הרבה דברים שיועילו לנו בפתירת בעיות עם הfilesystem.

עם הפקודה נדגים כיצד מעלים filesystem כך שדיסק מסויים למעשה מכוון לתיקייה שיצרנו
  • mount -o rw /dev/sda2 /tmp/newdir
o- בא לציין שישנם פרמטרים נוספים לפעולת הmount הנוכחית
rw אומר שהמערכת קבצים תועלה במצב שיאפשר לקרוא ולכתוב אליה (זוהי הברירת מחדל)

חשוב לציין שאם newdir לא קיימת, הפעולה לא תעבוד. לכן יש ליצור אותה קודם כל עם mkdir במידה ואין תיקייה כזאת.

נעבור לפקודה הבאה שהיא הפעולה ההפוכה לmount. היא למעשה תיצור את פעולה הניתוק בין /dev/sda2 לתיקייה שיצרנו:
  • umount /tmp/newdir 
חשוב לציין שלרוב זה לא עובד כיוון שמישהו או משהו משתמש בנתיב הזה ואז umount פשוט ייכשל.
אך למצב הזה יש מספר פתרונות:
  1. להוריד את המערכת למצב single-user ואז לבצע את הפקודה - זאת הדרך המועדפת עליי אך לא תמיד יש לנו את התנאים לעשות את זה
  2. אופציה נחמדה שנתמכת רק מקרנל 2.4.11 היא הפרמטר l- שפשוט מחכה לרגע שהמערכת לא בשימוש ואז מבצע את הפקודה
  3. f- היא אפשרות נוצאה ברבה פקודות שפשוט אומרת לפקודה לעשות את זה בכוח ויהי מה - פחות אוהב את זה
  4. בעזרת fuser לבצע מעקב בנוגע לשימוש של המערכת ולהרוג תהליכים בההתאם
  • etc/fstab/
מדובר בקובץ חשוב מאוד למערכת בכל מה שנוגע לFilesystems.
הוא מורה למערכת לאילו מערכות קבצים יש לבצע mount בתהליך העלייה של המחשב ועם אילו הגדרות.

דוגמא לקובץ fstab
זה היה ממש על קצה המזלג בכל מה שקשור לfilesystems. 
מזמין אתכם להמשיך וללמוד את הנושא, יש הרבה מה להכיר.

עד הפוסט הבא =)