Script ved login

Få hjælp til at sætte programmer eller funktioner op.
mote
Indlæg: 138
Tilmeldt: 9. nov 2009, 10:17
IRC nickname: mote
Geografisk sted: Århus

Script ved login

Indlæg af mote »

Hej.
Jeg har en Asus 1005P som har en multitouch touchpad som 10.10 ikke genkender.
På Ubuntuforums har jeg fundet et script som får den aktiveret, så jeg kan bruge tofinger scroll.
Men scriptet bliver kun kørt hver tredje eller fjerde gang jeg logger ind, og jeg må så køre det manuelt. (det virker altid).
Jeg har sat det ind i "Startup applications preferences".
Scriptet ser sådan her ud.

Kode: Vælg alt

#!/bin/bash

sleep 10
xinput set-int-prop "SynPS/2 Synaptics TouchPad" "Two-Finger Scrolling" 8 1
xinput set-int-prop "SynPS/2 Synaptics TouchPad" "Synaptics Two-Finger Scrolling" 8 1 1
xinput set-int-prop "SynPS/2 Synaptics TouchPad" "Synaptics Two-Finger Pressure" 32 10
xinput set-int-prop "SynPS/2 Synaptics TouchPad" "Synaptics Two-Finger Width" 32 8
synclient TapButton2=2

exit


Det gør ingen forskel at forøge sleep til 15 el. 20.
Hvorfor bliver scriptet ikke kørt, og hvad kan jeg gøre ved det?
Senest rettet af mote 17. mar 2011, 11:00, rettet i alt 1 gang.
soundpartner
Indlæg: 3461
Tilmeldt: 27. sep 2008, 23:51
IRC nickname: sound
Geografisk sted: København

Re: Script ved login

Indlæg af soundpartner »

Du er en knag...
Jeg har rodet med netop 2fingwer scroll på min nye lenovo, og der virker dine komandoer også. Jeh har ikke lige fået det kørt ved boot, men det gør jeg senere i dag eller i morgen, og hvis det kører for mig skal jeg nok dele hvordan jeg har gjort det...

Gad vide om det også virlker på min vaio, og min PB hvor 2finger scroll heller ikke virker...
Gør det det så kommer der nok et script på scripts.linux.dk med løsningen
Selvudnævnt guru når det drejer sig om mobilt bredbånd

Webmaster og stifter af:
Billede
Hvor du finder scripts til en hver situation

Billede
lath
Indlæg: 5095
Tilmeldt: 27. apr 2008, 02:16
IRC nickname: lars_t_h
Geografisk sted: Fyn

Re: Script ved login

Indlæg af lath »

kigger lige med her i tråden

Overvåg denne tråd funktionen er væk med det nye design, og er ikke dukket op igen, så beklager denne spam.

/Lars
Jeg er Software ingeniør (Diplomingeniør) i Informationsteknologi og indlejede systemer, hvor indlejrede systemer er computer (microcontroller) + elektronik i for eksempel et TV, en router, en vaskemaskine og den slags
AJenbo
Admin
Indlæg: 20884
Tilmeldt: 15. nov 2009, 15:04
IRC nickname: AJenbo
Geografisk sted: Vanløse, København

Re: Script ved login

Indlæg af AJenbo »

lath skrev:Overvåg denne tråd funktionen er væk med det nye design, og er ikke dukket op igen

Det gør den når jeg få tid, og får løst de mere presserende problemer. Har du løst til selv at implementere den kan du også få kilde koden og sende mig en patch.
lath
Indlæg: 5095
Tilmeldt: 27. apr 2008, 02:16
IRC nickname: lars_t_h
Geografisk sted: Fyn

Re: Script ved login

Indlæg af lath »

AJenbo skrev:
lath skrev:Overvåg denne tråd funktionen er væk med det nye design, og er ikke dukket op igen

Det gør den når jeg få tid, og får løst de mere presserende problemer. Har du løst til selv at implementere den kan du også få kilde koden og sende mig en patch.


Beklager. Selv om jeg sikkert kunne, så må jeg ikke.
Dagpengeregler bestemmer det. Jeg har spurgt a-kassen, og det er forbudt at udføre frivilligt arbejde inden for sin professsion(er).

/Lars
Jeg er Software ingeniør (Diplomingeniør) i Informationsteknologi og indlejede systemer, hvor indlejrede systemer er computer (microcontroller) + elektronik i for eksempel et TV, en router, en vaskemaskine og den slags
soundpartner
Indlæg: 3461
Tilmeldt: 27. sep 2008, 23:51
IRC nickname: sound
Geografisk sted: København

Re: Script ved login

Indlæg af soundpartner »

ok dette er hvad jeg har gjort, og det ser ud til at fungere...

kopier dit script til mappen /etc/init.d
da dette kræver root kan det gøres med følgende:

Kode: Vælg alt

sudo cp script /etc/init.d/touchpad

gør scriptet eksekverbart

Kode: Vælg alt

cd /etc/init.d && sudo chmod +x touchpad

opdater rc

Kode: Vælg alt

sudo update-rc.d touchpad defaults

og her ser det vist ud til at virke.
Selvudnævnt guru når det drejer sig om mobilt bredbånd

Webmaster og stifter af:
Billede
Hvor du finder scripts til en hver situation

Billede
soundpartner
Indlæg: 3461
Tilmeldt: 27. sep 2008, 23:51
IRC nickname: sound
Geografisk sted: København

Re: Script ved login

Indlæg af soundpartner »

soundpartner skrev:ok dette er hvad jeg har gjort, og det ser ud til at fungere...

kopier dit script til mappen /etc/init.d
da dette kræver root kan det gøres med følgende:

Kode: Vælg alt

sudo cp script /etc/init.d/touchpad

gør scriptet eksekverbart

Kode: Vælg alt

cd /etc/init.d && sudo chmod +x touchpad

opdater rc

Kode: Vælg alt

sudo update-rc.d touchpad defaults

og her ser det vist ud til at virke.

ja ok... det virkede den ene gang, og så virkede det ikke mere
Selvudnævnt guru når det drejer sig om mobilt bredbånd

Webmaster og stifter af:
Billede
Hvor du finder scripts til en hver situation

Billede
lath
Indlæg: 5095
Tilmeldt: 27. apr 2008, 02:16
IRC nickname: lars_t_h
Geografisk sted: Fyn

Re: Script ved login

Indlæg af lath »

soundpartner skrev:
soundpartner skrev:ok dette er hvad jeg har gjort, og det ser ud til at fungere...

kopier dit script til mappen /etc/init.d
da dette kræver root kan det gøres med følgende:

Kode: Vælg alt

sudo cp script /etc/init.d/touchpad

gør scriptet eksekverbart

Kode: Vælg alt

cd /etc/init.d && sudo chmod +x touchpad

opdater rc

Kode: Vælg alt

sudo update-rc.d touchpad defaults

og her ser det vist ud til at virke.

ja ok... det virkede den ene gang, og så virkede det ikke mere


Jeg gætter, men skal de kommandoer ikke ned i en fil der køres per bruger, og ikke køre system-wide.
Jeg ved ikke hvor man gør det henne, og det skal også gøres på det rigtige tidspunkt i log on sekvens (og det er uanset om der logger ind automatisk, eller trykker på brugernavnet, og skriver kodeord og trykker på enter for at logge ind)

Det ser ikke så nemt ud, men i sidste indlæg i dette link foregår der lidt sort magi inde i Ubuntu, hvor han prøver at få $HOME/.profile scriptet kørt:
OK, don't ask me why this worked, but I fixed it.

I did this

sudo cat /etc/passwd | grep ^myusername
myusername:x:1000:1000:myactualname,,,:/home/myusername:/bin/bash

which showed that my default shell was /bin/bash. Just for the heck of it I edited /etc/passwd so that my shell would be /bin/sh. Restart Gnome with ctrl-alt-backspace. Path is fixed but gnome-terminal is now crappy. Re-edit /etc/passwd back to /bin/bash, restart Gnome, and voila! PATH is fixed!!! just to be sure though I rebooted and it is indeed fixed.

Don't know why, can't explain it, but it works!!!


/Lars
Jeg er Software ingeniør (Diplomingeniør) i Informationsteknologi og indlejede systemer, hvor indlejrede systemer er computer (microcontroller) + elektronik i for eksempel et TV, en router, en vaskemaskine og den slags
mote
Indlæg: 138
Tilmeldt: 9. nov 2009, 10:17
IRC nickname: mote
Geografisk sted: Århus

Re: Script ved login

Indlæg af mote »

Det har et eller andet at gøre med hvornår scriptet kører i opstarten af profilen.
Her er tråden som jeg fandt scriptet i.
http://ubuntuforums.org/showthread.php?t=1479361
Som sagt har jeg sat i det i "Startup Applications" og det virker også nogle gange, bare ikke altid.
Jeg har brugt scriptet gennem 3-4 Ubuntu installationer, og det har virker næsten hver gang. Men den sidste gang jeg re-installerede systemet valgte jeg at sætte kryptering på hjemme folderen. Og det har sænket succes procenten en del.
soundpartner
Indlæg: 3461
Tilmeldt: 27. sep 2008, 23:51
IRC nickname: sound
Geografisk sted: København

Re: Script ved login

Indlæg af soundpartner »

mote skrev:Det har et eller andet at gøre med hvornår scriptet kører i opstarten af profilen.
Her er tråden som jeg fandt scriptet i.
http://ubuntuforums.org/showthread.php?t=1479361
Som sagt har jeg sat i det i "Startup Applications" og det virker også nogle gange, bare ikke altid.
Jeg har brugt scriptet gennem 3-4 Ubuntu installationer, og det har virker næsten hver gang. Men den sidste gang jeg re-installerede systemet valgte jeg at sætte kryptering på hjemme folderen. Og det har sænket succes procenten en del.

hvis det er p"grund af en krypteret hjemmemappe det driller så kan du jo prøve at gemme dit script uden for hjemmemappen. i så fald burde den krypterede mappe jo ikke have relevans
Selvudnævnt guru når det drejer sig om mobilt bredbånd

Webmaster og stifter af:
Billede
Hvor du finder scripts til en hver situation

Billede
mote
Indlæg: 138
Tilmeldt: 9. nov 2009, 10:17
IRC nickname: mote
Geografisk sted: Århus

Re: Script ved login

Indlæg af mote »

hvis det er p"grund af en krypteret hjemmemappe det driller så kan du jo prøve at gemme dit script uden for hjemmemappen. i så fald burde den krypterede mappe jo ikke have relevans


Det virker sådan set, bare ikke altid. ;-)
Det med krypteringen gør at den bliver belastet mere når den bruger disken. Jeg har også Ubuntu One syncdaemon'en til at kværne gennem 10.000 filer når jeg logger ind. Min maskine er en netbook, så det er ikke en vildt hurtig maskine.
Jeg tror det som er sker er at når jeg logger ind starter der en masse services og på en gang, og så er der et eller andet som timer out eller at kommandoerne bliver skrevet til noget som ikke er startet op endnu. Der var også problemer med at lægge scriptet ind i startup indtil den det sleep kommando blev sat ind.
lath
Indlæg: 5095
Tilmeldt: 27. apr 2008, 02:16
IRC nickname: lars_t_h
Geografisk sted: Fyn

Re: Script ved login

Indlæg af lath »

Det kan du nok ordne det sådan her.

  1. Dit scripts skal startes med root rettigheder.
  2. Det første scriptet gør er at det kører renice på sit eget proces id (pid), som giver dit program mere procestid end alle andre programmer, og derfor kører færdig før de fleste andre programmer. +5 til +7 bør være nok.
    renice manual side:http://manpages.ubuntu.com/manpages/maverick/en/man1/renice.1.html
  3. I punkt 4 dropper scriptet derefter sine root privillegier, fordi det ikke længere har brug for dem. Det gør den ved at det skifte til dit brugernavn. (su kommandoen bruges)
  4. Til sidst kører dine kommandoer:

    Kode: Vælg alt

    su <brugernavn> -c "kode/script-der-skal-køres-som-en-anden-bruger"

Det ville måske være bedst at køre dit script fra en lille C wrapper der skifter hastighed (renicer scriptets prioritiet), når scriptet er startet.
Et oversat program (C wrapperen) kan man køre SET UID root, så det kan startes op af dig som alm bruger uden brug af sudo for at få root rettigheder.

/Lars
Jeg er Software ingeniør (Diplomingeniør) i Informationsteknologi og indlejede systemer, hvor indlejrede systemer er computer (microcontroller) + elektronik i for eksempel et TV, en router, en vaskemaskine og den slags
lath
Indlæg: 5095
Tilmeldt: 27. apr 2008, 02:16
IRC nickname: lars_t_h
Geografisk sted: Fyn

Re: Script ved login

Indlæg af lath »

Det kan du nok ordne det sådan her.

  1. Dit scripts skal startes med root rettigheder.
  2. Det første scriptet gør er at det kører renice på sit eget proces id (pid), som giver dit program mere procestid end alle andre programmer, og derfor kører færdig før de fleste andre programmer. -5 til -7 ekstra bør være nok.
    renice manual side:http://manpages.ubuntu.com/manpages/maverick/en/man1/renice.1.html
  3. I punkt 4 dropper scriptet derefter sine root privillegier, fordi det ikke længere har brug for dem. Det gør den ved at det skifte til dit brugernavn. (su kommandoen bruges)
  4. Til sidst kører dine kommandoer:

    Kode: Vælg alt

    su <brugernavn> -c "kode/script-der-skal-køres-som-en-anden-bruger"

Det ville måske være bedst at køre dit script fra en lille C wrapper der skifter hastighed (renicer scriptets prioritiet), når scriptet er startet.
Et oversat program (C wrapperen) kan man køre SET UID root, så det kan startes op af dig som alm bruger uden brug af sudo for at få root rettigheder.

Jeg har også brug for sådan en wrapper, så her er nogle noter til mig selv (programkode vil blive lagt i nyt indlæg i Sandkassen og nok også på github):
renice i C er:
NAME
getpriority, setpriority - get/set program scheduling priority

SYNOPSIS
#include <sys/time.h>
#include <sys/resource.h>

int getpriority(int which, int who);
int setpriority(int which, int who, int prio);

Bemærkning: programmet skal køre med root rettigheder, hvis prioriteten skal være bedre (mindre end 0 er bedre, større end 0 er værre)

fra setpriority(2) man siden.


skift af identitet (svarer til su-kommandoen uden at kunne køre et andet program) er i C:
NAME
setuid - set user identity

SYNOPSIS
#include <sys/types.h>
#include <unistd.h>

int setuid(uid_t uid);

fra setuid(2) man siden

Til dem der er interesseret i at vide det, så skal der også er fork(i en if sætnings test del)-exec*-wait system kaldene bruges for at kunne starte at andet program på Linux/UNIX/*BSD styresystemer.

fork - til at lave en ny proces(=program, der er en kopi af det program det blev startet fra):
NAME
fork - create a new process

LIBRARY
Standard C Library (libc, -lc)

SYNOPSIS
#include <sys/types.h>
#include <unistd.h>

pid_t
fork(void);

fra fork(2) man siden


exec* - til at man i en ny proces kan erstatte det program der kører nu med et andet:
NAME
execl, execlp, execle, execv, execvp - execute a file

SYNOPSIS
#include <unistd.h>

extern char **environ;

int execl(const char *path, const char *arg, ...);
int execlp(const char *file, const char *arg, ...);
int execle(const char *path, const char *arg,
..., char * const envp[]);
int execv(const char *path, char *const argv[]);
int execvp(const char *file, char *const argv[]);

DESCRIPTION
The exec() family of functions replaces the current process image with
a new process image. The functions described in this manual page are
front-ends for execve(2). (See the manual page for execve(2) for
further details about the replacement of the current process image.)

....

fra exec(3) man siden.


wait - bruger vi til at vente på at et program vi har startet bliver færdig - det gør vi for at undgå zombie processer.
NAME

wait, waitpid, waitid - wait for process to change state


SYNOPSIS

#include <sys/types.h>
#include <sys/wait.h>

pid_t wait(int *status);

pid_t waitpid(pid_t pid, int *status, int options);

int waitid(idtype_t idtype, id_t id, siginfo_t *infop, int options);

fra wait(2) man siden


Lidt om zombie processer (og kill -9):
Why can't I kill a process with -9?

One of the early things people learn about Unix is that a "kill -9" is invincible- that a process must die if you send it a KILL (-9). However, that's not entirely true:

* A process can be sleeping in kernel code. Usually that's because of faulty hardware or a badly written driver- or maybe a little of both. A device that isn't set to the interrupt the driver thinks it is can cause this, for example- the driver is waiting for something its never going to get. The process doesn't ignore your signal- it just never gets it.

* A zombie process doesn't react to signals because it's not really a process at all- it's just what's left over after it died. What's supposed to happen is that its parent process was to issue a "wait()" to collect the information about its exit. If the parent doesn't (programming error or just bad programming), you get a zombie. The zombie will go away if its parent dies- it will be "adopted" by init which will do the wait()- so if you see one hanging about, check its parent; if it is init, it will be gone soon, if not the only recourse is to kill the parent..which you may or may not want to do.

* Finally, a process that is being traced (by a debugger, for example) won't react to the KILL either.

citat fra:http://aplawrence.com/SCOFAQ/FAQ_scotec6cantkill.html


/Lars
Jeg er Software ingeniør (Diplomingeniør) i Informationsteknologi og indlejede systemer, hvor indlejrede systemer er computer (microcontroller) + elektronik i for eksempel et TV, en router, en vaskemaskine og den slags
mote
Indlæg: 138
Tilmeldt: 9. nov 2009, 10:17
IRC nickname: mote
Geografisk sted: Århus

Re: Script ved login

Indlæg af mote »

Det er blevet lidt for kompliceret til at jeg kan følge med i det.
Fik i det til at virker hver gang i logger på?
lath
Indlæg: 5095
Tilmeldt: 27. apr 2008, 02:16
IRC nickname: lars_t_h
Geografisk sted: Fyn

Re: Script ved login

Indlæg af lath »

Hej mote

Ikke hos mig.


Der er også ok at er blevet for kompliceret - det jeg laver er ikke lige for almindelige brugere.

Jeg kan nævne at jeg er gået i gang med at lave den C wrapper. Den er pt på 285 linier C kode, og jeg er ved at teste koden.

Jeg skal som sagt selv bruge den.
Jeg vil fortælle om den i Sandkassen når jeg er færdig med programmet.
Hvis jeg kan lave en *.deb fil (en pakkearkiv fil) så gør jeg det, ellers skal man følge en lille guide der i trin for trin fortæller hvad man skal gøre for at oversætte programmet fra C kildekode til maskinkode.
Jeg beskriver også hvordan programmet virker, og hvad man skal skrive for at sætte et script op til at kunne blive kørt af programmet.

/Lars
Jeg er Software ingeniør (Diplomingeniør) i Informationsteknologi og indlejede systemer, hvor indlejrede systemer er computer (microcontroller) + elektronik i for eksempel et TV, en router, en vaskemaskine og den slags