Talk:COMP 3000 2012 Midterm Material: Difference between revisions

From Soma-notes
Cdelahou (talk | contribs)
No edit summary
Sdp (talk | contribs)
added yu-gi-oh reference
 
(8 intermediate revisions by 2 users not shown)
Line 1: Line 1:




= Discussion ==
= Discussion =
 


= Only the facts =
= Only the facts =
Line 28: Line 27:
     U  G  O
     U  G  O
   -rwxrwxrwx
   -rwxrwxrwx
  To change user permission, use command: "chmod <UGO> <file/dir name>"
    ex: chmod 777 file
  The three digits represent User, Group or Others permissions. Represented as the sum of their permission values (read = 4, write = 2, execute = 1)
    eg. 754    U = 7 = 4 + 2 + 1 = read, write and execute
                G = 5 = 4 + 1    = read and execute
                O = 4            = read only
    eg. 623    U = 6 = 4 + 2    = read and write
                G = 2            = write only
                O = 3 = 2 + 1    = read and execute
       
 


   Memnonic: 'You go hugo!'
   Memnonic: 'You go hugo!'
  Mnemonic: 'Yu-gi-oh!'


   - denotes a regular file
   - denotes a regular file
Line 81: Line 97:
   environment is more global, but typically a COPY is passed on to child processes
   environment is more global, but typically a COPY is passed on to child processes
   envp is a series of keyvalue strings passed in with exec*
   envp is a series of keyvalue strings passed in with exec*
== Lab2 ==
=== Processes ===
  ps aux
  ps -e
  top
  run pstree.
  notice that cron, upstart-socket, and others are owned by init. These are daemons.
  notice that gnome display manager is a child of lightdm. Killing lightdm kills
  gnome. That's why we had to log into a virtual console
=== Upstart ===
 
  init is upstart
  started by kernel. It's the only think the kernel runs in userspace
  shutdown -r now
  switches to run level 6
  shutdown -h now
  switches to run level zero
  symlinks in /etc/init.d point to /lib/init/upstart-job
  successful sysV to upstart transition
  Upstart's entire deal is revamp the ol' sysV boot seq
  traditional init process is strictly synchronous, blocking future tasks until the
  current one has completed.
  upstart is async. and allows more parralleissimsimsmmmsm
=== Logs ===
  /var/log
  use lsof to check who's accessing a file.
  Rule of thumb.
    if logfile is generic, then written to by rsyslog (udev, auth, etc)
    if logfile has program name, written to by that program (apache)
  rsyslog
    daemon that handles syslog protocol
    handles generic logging for system
== Lab 3 ==
=== Tracing ===
  ltrace, strace
  Statically linking will make ltrace output nothing.
=== writing to files ===
  File * f = fopen(path, "w")
  fprintf(f,"blah")
  fclose(f)
=== exec* ===
  the exec family of functions replace the current process image with that of
  another file/binary.
  Does not return value if successful, -1 on failure
  Process keeps same PID
 
  execvp() inherits the current process's environment variables
  execve() needs to have the environment variables passed in as an array of pointers
  to null terminated strings.
 
=== Other  ===
  kill sends signals.
  used as follows:
    "kill <-command> <PID of program>"
  Important kill signals:
    -SIGINT or -2  -> (crtl-C) sends a kill signal to program, can be ignored. SIGINT is also the default signal used by kill. (ie. kill <PID> = kill -2 <PID>)
    -SIGSTP        -> (crtl-Z) sends suspend program signal, to resume it use fg <pid or jobnumber> or bg <pid or jobnumber> or send SIGCONT
    -SIGSTOP        -> same as SIGSTP, except no shortcut keys and it is unblockable.
    -SIGCONT        -> Continue signal, resumes a stopped program
    -SIGFPE        -> floating point exception (dividing by zero)
    -SIGEGV        -> Segmentation fault signal.
    -SIGCHLD        -> Signal sent to parent when child terminates.
    -SIGKILL or -9  -> Unblockable kill signal

Latest revision as of 01:54, 26 October 2012


Discussion

Only the facts

I'll be putting up my notes of notes up here. Hopefully people can benefit from these. I'll be summing up the answers from the lab and adding a few more details here and there.

Lab 1

Types of shell commands

 Built ins
 Shell functions
 binaries (scripts and binaries
 alias 


Shell builtins vs binaries

 binaries exist elsewhere
 faster, no forking needed
 Kernel functions (IO redirection)


ls -l

 1          2  3     4   5     6             7
 -rwxr-xr-x 1 root root 104508 Mar 31  2012 /bin/ls
   U  G  O
 -rwxrwxrwx
 To change user permission, use command: "chmod <UGO> <file/dir name>"
   ex: chmod 777 file
 The three digits represent User, Group or Others permissions. Represented as the sum of their permission values (read = 4, write = 2, execute = 1)
   eg. 754     U = 7 = 4 + 2 + 1 = read, write and execute
               G = 5 = 4 + 1     = read and execute
               O = 4             = read only
   eg. 623     U = 6 = 4 + 2     = read and write
               G = 2             = write only
               O = 3 = 2 + 1     = read and execute
       



 Memnonic: 'You go hugo!'
 Mnemonic: 'Yu-gi-oh!'
 - denotes a regular file
 d denotes a directory
 b denotes a block special file
 c denotes a character special file
 l denotes a symbolic link
 p denotes a named pipe


 2) 1 link to /bin/ls
 3) user root
 4) group root
 5) size in bytes
 6) date last modified
 7) path/filename

I/O redirection

 << keyword    HEREDOC. Input until program reads specified keyword
 >> append
 < read from path
 > write to path, blow away anything there
 | pipes

file descriptors

 0 stdin
 1 stdout
 2 stderr
 3-9 other

fd redirection

 #> where # is a file descriptor
 a>&b redirects file descriptor a to b.
 COMMAND &>> file.txt
 Appends BOTH STDERR and STDOUT to file.txt

For loops

 //For all files in fold that start with l, echo the title
 for i in l*; do
   echo $i
 done

Bg vs fg

 Bash waits or doesn't for return
 Both write to stdout as normal

Shell vars

 shell vars only apply to shell. Live in shell
 environment is more global, but typically a COPY is passed on to child processes
 envp is a series of keyvalue strings passed in with exec*

Lab2

Processes

 ps aux
 ps -e
 top


 run pstree.
 notice that cron, upstart-socket, and others are owned by init. These are daemons.
 notice that gnome display manager is a child of lightdm. Killing lightdm kills
 gnome. That's why we had to log into a virtual console

Upstart

 init is upstart
 started by kernel. It's the only think the kernel runs in userspace
 shutdown -r now
 switches to run level 6
 shutdown -h now
 switches to run level zero
 symlinks in /etc/init.d point to /lib/init/upstart-job
 successful sysV to upstart transition
 Upstart's entire deal is revamp the ol' sysV boot seq
 traditional init process is strictly synchronous, blocking future tasks until the
 current one has completed. 
 upstart is async. and allows more parralleissimsimsmmmsm

Logs

 /var/log 
 use lsof to check who's accessing a file.
 Rule of thumb.
   if logfile is generic, then written to by rsyslog (udev, auth, etc)
   if logfile has program name, written to by that program (apache)
 rsyslog
   daemon that handles syslog protocol
   handles generic logging for system


Lab 3

Tracing

 ltrace, strace
 Statically linking will make ltrace output nothing.

writing to files

 File * f = fopen(path, "w")
 fprintf(f,"blah")
 fclose(f)

exec*

 the exec family of functions replace the current process image with that of
 another file/binary.
 Does not return value if successful, -1 on failure
 Process keeps same PID
 
 execvp() inherits the current process's environment variables
 execve() needs to have the environment variables passed in as an array of pointers
 to null terminated strings.
 

Other

 kill sends signals.
 used as follows: 
   "kill <-command> <PID of program>"
 Important kill signals:
   -SIGINT or -2   -> (crtl-C) sends a kill signal to program, can be ignored. SIGINT is also the default signal used by kill. (ie. kill <PID> = kill -2 <PID>)
   -SIGSTP         -> (crtl-Z) sends suspend program signal, to resume it use fg <pid or jobnumber> or bg <pid or jobnumber> or send SIGCONT
   -SIGSTOP        -> same as SIGSTP, except no shortcut keys and it is unblockable.
   -SIGCONT        -> Continue signal, resumes a stopped program
   -SIGFPE         -> floating point exception (dividing by zero)
   -SIGEGV         -> Segmentation fault signal.
   -SIGCHLD        -> Signal sent to parent when child terminates.
   -SIGKILL or -9  -> Unblockable kill signal