1. Cel laboratorium
Celem ćwiczeń było przypomnienie sobie podstaw działania w systemie operacyjnym Linux.
2. Przebieg laboratorium
* 2.1 Katalog domowy
[wsp29@st09 ~]$ pwd
/home/wsp29
[wsp29@st09 ~]$ ls -la
razem 252
drwxr-xr-x 19 wsp29 wsp29 4096 paź 15 12:16 .
drwxr-xr-x 3 root root 0 paź 15 12:10 ..
-rw------- 1 wsp29 wsp29 40 paź 15 12:12 .bash_history
-rw-r--r-- 1 wsp29 wsp29 18 paź 12 14:43 .bash_logout
-rw-r--r-- 1 wsp29 wsp29 176 paź 12 14:43 .bash_profile
-rw-r--r-- 1 wsp29 wsp29 225 paź 12 14:43 .bashrc
-rw-r--r-- 1 wsp29 wsp29 124 paź 12 14:43 .bashrc.rpmnew
drwx------ 7 wsp29 wsp29 4096 paź 15 12:11 .beagle
drwxr-xr-x 2 wsp29 wsp29 4096 paź 15 12:16 Desktop
-rw------- 1 wsp29 wsp29 26 paź 15 12:10 .dmrc
drwx------ 4 wsp29 wsp29 4096 paź 15 12:11 .gconf
drwx------ 2 wsp29 wsp29 4096 paź 15 12:17 .gconfd
drwxrwxr-x 3 wsp29 wsp29 4096 paź 15 12:10 .gnome
drwxr-xr-x 6 wsp29 wsp29 4096 paź 15 12:10 .gnome2
drwx------ 2 wsp29 wsp29 4096 paź 15 12:10 .gnome2_private
drwxrwxr-x 2 wsp29 wsp29 4096 paź 15 12:10 .gstreamer-0.10
-rw-r--r-- 1 wsp29 wsp29 87 paź 15 12:10 .gtkrc-1.2-gnome2
-rw------- 1 wsp29 wsp29 169 paź 15 12:10 .ICEauthority
drwxr-xr-x 3 wsp29 wsp29 4096 paź 12 14:43 .kde
drwx------ 3 wsp29 wsp29 4096 paź 15 12:10 .metacity
drwxr-xr-x 5 wsp29 wsp29 4096 paź 15 12:10 .mozilla
drwxr-xr-x 3 wsp29 wsp29 4096 paź 15 12:10 .nautilus
drwxr-xr-x 3 wsp29 wsp29 4096 paź 12 14:43 pvm3
-rw-rw-r-- 1 wsp29 wsp29 888 paź 15 12:16 .recently-used.xbel
drwxrwxr-x 3 wsp29 wsp29 4096 paź 15 12:10 .redhat
drwx------ 2 wsp29 wsp29 4096 paź 15 12:11 .ssh
drwx------ 2 wsp29 wsp29 4096 paź 15 12:10 .Trash
-rw-r--r-- 1 wsp29 wsp29 5428 paź 12 14:43 .vimrc
drwxr-xr-x 2 wsp29 wsp29 4096 paź 15 12:10 .wapi
-rw-r--r-- 1 wsp29 wsp29 1008 paź 12 14:43 .xpvm_hosts
-rw-r--r-- 1 wsp29 wsp29 252 paź 15 12:10 .xsession-errors
-rw-r--r-- 1 wsp29 wsp29 658 paź 12 14:43 .zshrc
[wsp29@st09 ~]$ ls -l | grep sh
[wsp29@st09 ~]$ ls -l | grep .ssh
[wsp29@st09 ~]$ ls -l
razem 16
drwxr-xr-x 2 wsp29 wsp29 4096 paź 15 12:16 Desktop
drwxr-xr-x 3 wsp29 wsp29 4096 paź 12 14:43 pvm3
[wsp29@st09 ~]$ ls -la | grep .ssh
drwx------ 2 wsp29 wsp29 4096 paź 15 12:11 .ssh
[wsp29@st09 ~]$ ls -la | grep sh
-rw------- 1 wsp29 wsp29 40 paź 15 12:12 .bash_history
-rw-r--r-- 1 wsp29 wsp29 18 paź 12 14:43 .bash_logout
-rw-r--r-- 1 wsp29 wsp29 176 paź 12 14:43 .bash_profile
-rw-r--r-- 1 wsp29 wsp29 225 paź 12 14:43 .bashrc
-rw-r--r-- 1 wsp29 wsp29 124 paź 12 14:43 .bashrc.rpmnew
drwx------ 2 wsp29 wsp29 4096 paź 15 12:11 .ssh
drwx------ 2 wsp29 wsp29 4096 paź 15 12:10 .Trash
-rw-r--r-- 1 wsp29 wsp29 658 paź 12 14:43 .zshrc
[wsp29@st09 ~]$ id
uid=1228(wsp29) gid=1228(wsp29) grupy=1228(wsp29) context=user_u:system_r:unconfined_t
[wsp29@st09 ~]$ logname
wsp29
[wsp29@st09 ~]$ set TESTZMIENNA=12
[wsp29@st09 ~]$ echo $TESTZMIENNA
[wsp29@st09 ~]$ export TEST=2
[wsp29@st09 ~]$
[wsp29@st09 ~]$ echo $TEST
2
[wsp29@st09 ~]$ set TEST=3
[wsp29@st09 ~]$ echo $TEST
2
[wsp29@st09 ~]$ export TEST=3
[wsp29@st09 ~]$ echo $TEST
3
[wsp29@st09 ~]$ alias ll='export TEST=12'
[wsp29@st09 ~]$ ll
[wsp29@st09 ~]$ echo $TEST
12
[wsp29@st09 ~]$ hostname
st09.lab306
* 2.2 .bashrc i .profile
[wsp29@st09 ~]$ ls -la
razem 252
drwxr-xr-x 19 wsp29 wsp29 4096 paź 15 12:19 .
drwxr-xr-x 3 root root 0 paź 15 12:10 ..
-rw------- 1 wsp29 wsp29 297 paź 15 12:20 .bash_history
-rw-r--r-- 1 wsp29 wsp29 18 paź 12 14:43 .bash_logout
-rw-r--r-- 1 wsp29 wsp29 176 paź 12 14:43 .bash_profile
-rw-r--r-- 1 wsp29 wsp29 225 paź 12 14:43 .bashrc
-rw-r--r-- 1 wsp29 wsp29 124 paź 12 14:43 .bashrc.rpmnew
drwx------ 7 wsp29 wsp29 4096 paź 15 12:11 .beagle
drwxr-xr-x 2 wsp29 wsp29 4096 paź 15 12:19 Desktop
-rw------- 1 wsp29 wsp29 26 paź 15 12:10 .dmrc
drwx------ 4 wsp29 wsp29 4096 paź 15 12:11 .gconf
drwx------ 2 wsp29 wsp29 4096 paź 15 12:20 .gconfd
drwxrwxr-x 3 wsp29 wsp29 4096 paź 15 12:10 .gnome
drwxr-xr-x 6 wsp29 wsp29 4096 paź 15 12:10 .gnome2
drwx------ 2 wsp29 wsp29 4096 paź 15 12:10 .gnome2_private
drwxrwxr-x 2 wsp29 wsp29 4096 paź 15 12:10 .gstreamer-0.10
-rw-r--r-- 1 wsp29 wsp29 87 paź 15 12:10 .gtkrc-1.2-gnome2
-rw------- 1 wsp29 wsp29 169 paź 15 12:10 .ICEauthority
drwxr-xr-x 3 wsp29 wsp29 4096 paź 12 14:43 .kde
[wsp29@st09 ~]$ p29 wsp29 4096 paź 15 12:10 .metacity
drwxr-xr-x 5 wsp29 wsp29 4096 paź 15 12:10 .mozilla
drwxr-xr-x 3 wsp29 wsp29 4096 paź 15 12:10 .nautilus
drwxr-xr-x 3 wsp29 wsp29 4096 paź 12 14:43 pvm3
-rw-rw-r-- 1 wsp29 wsp29 889 paź 15 12:19 .recently-used.xbel
drwxrwxr-x 3 wsp29 wsp29 4096 paź 15 12:10 .redhat
drwx------ 2 wsp29 wsp29 4096 paź 15 12:11 .ssh
drwx------ 2 wsp29 wsp29 4096 paź 15 12:10 .Trash
-rw-r--r-- 1 wsp29 wsp29 5428 paź 12 14:43 .vimrc
drwxr-xr-x 2 wsp29 wsp29 4096 paź 15 12:10 .wapi
-rw-r--r-- 1 wsp29 wsp29 1008 paź 12 14:43 .xpvm_hosts
-rw-r--r-- 1 wsp29 wsp29 252 paź 15 12:10 .xsession-errors
-rw-r--r-- 1 wsp29 wsp29 658 paź 12 14:43 .zshrc
[wsp29@st09 ~]$ .bashrc
bash: .bashrc: command not found
[wsp29@st09 ~]$ vim .bashrc
[wsp29@st09 ~]$ vim .bashrc
//konsola2
[wsp29@st09 ~]$ echo $TEST
[wsp29@st09 ~]$ echo $TEST1
tekst jakis
[wsp29@st09 ~]$
Zawartość pliku .bashrc
1 # .bashrc
2
3 # User specific aliases and functions
4
5 # Source global definitions
6 if [ -f /etc/bashrc ]; then
7 . /etc/bashrc
8 fi
9 export EDITOR=vim
10 export PVM_ROOT=/usr/share/pvm3
11 export PVM_ARCH=LINUX
12 export PVMNETSOCKPORT=40000
13 export TEST1="tekst jakis"
* 2.3 Poruszanie się
[wsp29@st09 ~]$ ls
Desktop pvm3
[wsp29@st09 ~]$ mkdir A
[wsp29@st09 ~]$ mkdir B
[wsp29@st09 ~]$ cd A
[wsp29@st09 A]$ ls
[wsp29@st09 A]$ mkdir AA
[wsp29@st09 A]$ mkdir BB
[wsp29@st09 A]$ cd AA
[wsp29@st09 AA]$ mkdir AAA
[wsp29@st09 AA]$ mkdir BBB
[wsp29@st09 AA]$ ls
AAA BBB
[wsp29@st09 AA]$ cd ../../
[wsp29@st09 ~]$ ls
A B Desktop pvm3
[wsp29@st09 ~]$ cd B
[wsp29@st09 B]$ ls
[wsp29@st09 B]$ mkdir CC
[wsp29@st09 B]$ cd
[wsp29@st09 ~]$ ls
A B Desktop pvm3
[wsp29@st09 ~]$ cd A/AA/BBB
[wsp29@st09 BBB]$ pwd
/home/wsp29/A/AA/BBB
[wsp29@st09 BBB]$ cd
[wsp29@st09 ~]$ cd B/CC
[wsp29@st09 CC]$ cd
[wsp29@st09 ~]$ rmdir /home/wsp29/B/CC
[wsp29@st09 ~]$ rmdir /home/wsp29/A/AA/AAA
[wsp29@st09 ~]$ rmdir /home/wsp29/A/AA/BBB
[wsp29@st09 ~]$ rmdir /home/wsp29/A/AA
[wsp29@st09 ~]$ rmdir /home/wsp29/A/BB
[wsp29@st09 ~]$ rmdir /home/wsp29/A
[wsp29@st09 ~]$ rmdir /home/wsp29/B
[wsp29@st09 ~]$ ls
Desktop pvm3
[wsp29@st09 ~]$
* 2.4 Pliki
[wsp29@st09 ~]$ cat .bashrc
# .bashrc
# User specific aliases and functions
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
export EDITOR=vim
export PVM_ROOT=/usr/share/pvm3
export PVM_ARCH=LINUX
export PVMNETSOCKPORT=40000
export TEST1="tekst jakis"
[wsp29@st09 ~]$ head .bashrc
# .bashrc
# User specific aliases and functions
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
export EDITOR=vim
export PVM_ROOT=/usr/share/pvm3
[wsp29@st09 ~]$ tail .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
export EDITOR=vim
export PVM_ROOT=/usr/share/pvm3
export PVM_ARCH=LINUX
export PVMNETSOCKPORT=40000
export TEST1="tekst jakis"
[wsp29@st09 ~]$ ln -s .bashrc testlink
[wsp29@st09 ~]$ ls
Desktop pvm3 testlink
[wsp29@st09 ~]$ more testlink
# .bashrc
# User specific aliases and functions
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
export EDITOR=vim
export PVM_ROOT=/usr/share/pvm3
export PVM_ARCH=LINUX
export PVMNETSOCKPORT=40000
export TEST1="tekst jakis"
[wsp29@st09 ~]$ wc .bashrc
14 32 252 .bashrc
[wsp29@st09 ~]$
[wsp29@st09 ~]$ ps
PID TTY TIME CMD
5361 pts/0 00:00:00 bash
5385 pts/0 00:00:00 ps
[wsp29@st09 ~]$ ls > plik.txt
[wsp29@st09 ~]$ cat plik.txt
Desktop
plik.txt
pvm3
testlink
[wsp29@st09 ~]$ man du
[wsp29@st09 ~]$ wc plik.txt
4 4 31 plik.txt
[wsp29@st09 ~]$ ls -l
razem 28
drwxr-xr-x 2 wsp29 wsp29 4096 paź 15 12:37 Desktop
-rw-rw-r-- 1 wsp29 wsp29 31 paź 15 12:36 plik.txt
drwxr-xr-x 3 wsp29 wsp29 4096 paź 12 14:43 pvm3
lrwxrwxrwx 1 wsp29 wsp29 7 paź 15 12:34 testlink -> .bashrc
[wsp29@st09 ~]$ ls >> plikt.txt
[wsp29@st09 ~]$ cat plik.txt
Desktop
plik.txt
pvm3
testlink
[wsp29@st09 ~]$ ls -l
razem 36
drwxr-xr-x 2 wsp29 wsp29 4096 paź 15 12:37 Desktop
-rw-rw-r-- 1 wsp29 wsp29 41 paź 15 12:39 plikt.txt
-rw-rw-r-- 1 wsp29 wsp29 31 paź 15 12:36 plik.txt
drwxr-xr-x 3 wsp29 wsp29 4096 paź 12 14:43 pvm3
lrwxrwxrwx 1 wsp29 wsp29 7 paź 15 12:34 testlink -> .bashrc
[wsp29@st09 ~]$
* 2.5 Procesy
[wsp29@st09 ~]$ ps
PID TTY TIME CMD
5361 pts/0 00:00:00 bash
5385 pts/0 00:00:00 ps
[wsp29@st09 ~]$ ls > plik.txt
[wsp29@st09 ~]$ cat plik.txt
Desktop
plik.txt
pvm3
testlink
[wsp29@st09 ~]$ man du
[wsp29@st09 ~]$ wc plik.txt
4 4 31 plik.txt
[wsp29@st09 ~]$ ls -l
razem 28
drwxr-xr-x 2 wsp29 wsp29 4096 paź 15 12:37 Desktop
-rw-rw-r-- 1 wsp29 wsp29 31 paź 15 12:36 plik.txt
drwxr-xr-x 3 wsp29 wsp29 4096 paź 12 14:43 pvm3
lrwxrwxrwx 1 wsp29 wsp29 7 paź 15 12:34 testlink -> .bashrc
[wsp29@st09 ~]$ ls >> plikt.txt
[wsp29@st09 ~]$ cat plik.txt
Desktop
plik.txt
pvm3
testlink
[wsp29@st09 ~]$ ls -l
razem 36
drwxr-xr-x 2 wsp29 wsp29 4096 paź 15 12:37 Desktop
-rw-rw-r-- 1 wsp29 wsp29 41 paź 15 12:39 plikt.txt
-rw-rw-r-- 1 wsp29 wsp29 31 paź 15 12:36 plik.txt
drwxr-xr-x 3 wsp29 wsp29 4096 paź 12 14:43 pvm3
lrwxrwxrwx 1 wsp29 wsp29 7 paź 15 12:34 testlink -> .bashrc
[wsp29@st09 ~]$
* 2.6 Poznajemy kompilator gcc
wsp29@st09 ~]$ vim prog.c
[wsp29@st09 ~]$ gcc prog.c -o prog
[wsp29@st09 ~]$ ./prog
hello[wsp29@st09 ~]$
*2.7 Przekazywanie parametrów do programu – lista argumentów
[wsp29@st09 ~]$ ./prog test asd sss ddd
ddd
sss
asd
test
./prog
[wsp29@st09 ~]$
Kod programu
1 #include <stdlib.h>
2 #include <stdio.h>
3
4 int main(int argc, char* argv[]){
5
6 int i = argc-1;
7 for(; i>=0; i--){
8 printf("%s\n",argv[i]);
9 }
10
11 return 0;
12 }
* 2.8 Numery identyfikacyjne
[wsp29@st09 ~]$ vim prog.c
[wsp29@st09 ~]$ gcc prog.c -o prog
[wsp29@st09 ~]$ ./prog
id wlasne: 5915
proces rodzica: 5608
[wsp29@st09 ~]$
Kod programu
1 #include <stdlib.h>
2 #include <stdio.h>
3 #include <sys/types.h>
4 #include <sys/stat.h>
5
6 int main(){
7 printf("id wlasne: %i\n", getpid());
8 printf("proces rodzica: %i\n", getppid());
9 return 0;
10 }
* 2.9 Identyfikatory użytkownika i grupy
[wsp29@st09 ~]$ ./prog
id wlasne: 5963
proces rodzica: 5608
id uzytkownika: 1228
id grupy: 1228
[wsp29@st09 ~]$
Kod programu
1 #include <stdlib.h>
2 #include <stdio.h>
3 #include <sys/types.h>
4 #include <sys/stat.h>
5
6 int main(){
7 printf("id wlasne: %i\n", getpid());
8 printf("proces rodzica: %i\n", getppid());
9 printf("id uzytkownika: %i\n", getuid());
10 printf("id grupy: %i\n", getgid());
11 return 0;
12 }
* 2.10 Pliki
[wsp29@st09 ~]$ ./prog plik.txt
wczytano
mode: 33204
ino: 4260291
dev: 18
nlink: 1
uid: 1228
[wsp29@st09 ~]$
Kod programu
1 #include <stdlib.h>
2 #include <stdio.h>
3 #include <sys/types.h>
4 #include <sys/stat.h>
5
6 int main(int argc, char* argv[]){
7 struct stat tmpStat;
8 if(stat(argv[1],&tmpStat)==0){
9 printf("wczytano\n");
10 printf("mode: %d\n",tmpStat.st_mode);
11 printf("ino: %d\n",tmpStat.st_ino);
12 printf("dev: %d\n",tmpStat.st_dev);
13 printf("nlink: %d\n",tmpStat.st_nlink);
14 printf("uid: %d\n",tmpStat.st_uid);
15
16 }
17
18
19 return 0;
20 }
3. Wnioski
Po wykonaniu powyższych zadań przypomnieliśmy sobie podstawowe zagadnienia z obsługi Linuxa, kompilacji programów w gcc, jak uzyskać podstawowe informacje o procesach oraz o dowolnym pliku wykorzystując strukturę stat.