Run process before opening file
Clash Royale CLAN TAG#URR8PPP
up vote
1
down vote
favorite
I want to achieve the following: every time I attempt to open a file (which is /etc/hosts in this case), a process/script (I don't know what the right term is) starts running. This script would require the user to do some task, e.g. spending x minutes reading some pdf or writing x lines of some document created by this script. Until this task is finished, the file won't open.
Is this possible? Can I achieve it with a bash script? Can I also guarantee that the file doesn't open if the process is somehow interrupted before its finished? And can I trigger the process independently of the way in which I open the file? E.g. from terminal or with the mouse.
I don't know much about computers, so the terminology I am using and the tags below are probably not the best. If this is the case, I apprecaite any convenient edit of the question. Thanks!
bash shell-script
 |Â
show 4 more comments
up vote
1
down vote
favorite
I want to achieve the following: every time I attempt to open a file (which is /etc/hosts in this case), a process/script (I don't know what the right term is) starts running. This script would require the user to do some task, e.g. spending x minutes reading some pdf or writing x lines of some document created by this script. Until this task is finished, the file won't open.
Is this possible? Can I achieve it with a bash script? Can I also guarantee that the file doesn't open if the process is somehow interrupted before its finished? And can I trigger the process independently of the way in which I open the file? E.g. from terminal or with the mouse.
I don't know much about computers, so the terminology I am using and the tags below are probably not the best. If this is the case, I apprecaite any convenient edit of the question. Thanks!
bash shell-script
To try to restrict the number of possible ways of opening the file, would you want to do this only when a particular user opens the file for editing (writing), e.g. if someone didsudo vim /etc/hosts
? What is the underlying issue that you are wanting to solve?
â Kusalananda
Jun 6 at 8:56
@Kusalananda I am the only user. Hence, sudo vim /etc/hosts should not be an exception. Neither should be when replacing vim by any other text editor, nor commands like xdg-open. I am trying to avoid procrastination with sites such as Youtube. I can block it via this file. But if I can undo the change any time, it is not much of a help. For this reason I am looking for a system that requires a large amount of effort to change the file back, so that I only do it when it really is necessary. And ideally this effort would be productive, e.g. forcing me to write some tex file or reading some pdf.
â Pedro
Jun 6 at 9:04
If at all possible. Hand over administration of the system to another trusted human being and get them to change the root password and restrict yoursudo
rights.
â Kusalananda
Jun 6 at 9:14
2
If you've already blocked the sites and now want to stop yourself from unblocking them, I think we've reached the limits of the technical problem and are now in the realms of the human problem :) If your urge to procrastinate is so high you'll go to the trouble of unblocking the site, then you really need to find a non-technical solution. Anything you can do, you can also undo.
â terdonâ¦
Jun 6 at 9:21
2
Only if you have the password to the router. And the outside connection has to be protected by the cabinet too, so that you can't just plug in a bypass ethernet cable.
â Kusalananda
Jun 6 at 9:31
 |Â
show 4 more comments
up vote
1
down vote
favorite
up vote
1
down vote
favorite
I want to achieve the following: every time I attempt to open a file (which is /etc/hosts in this case), a process/script (I don't know what the right term is) starts running. This script would require the user to do some task, e.g. spending x minutes reading some pdf or writing x lines of some document created by this script. Until this task is finished, the file won't open.
Is this possible? Can I achieve it with a bash script? Can I also guarantee that the file doesn't open if the process is somehow interrupted before its finished? And can I trigger the process independently of the way in which I open the file? E.g. from terminal or with the mouse.
I don't know much about computers, so the terminology I am using and the tags below are probably not the best. If this is the case, I apprecaite any convenient edit of the question. Thanks!
bash shell-script
I want to achieve the following: every time I attempt to open a file (which is /etc/hosts in this case), a process/script (I don't know what the right term is) starts running. This script would require the user to do some task, e.g. spending x minutes reading some pdf or writing x lines of some document created by this script. Until this task is finished, the file won't open.
Is this possible? Can I achieve it with a bash script? Can I also guarantee that the file doesn't open if the process is somehow interrupted before its finished? And can I trigger the process independently of the way in which I open the file? E.g. from terminal or with the mouse.
I don't know much about computers, so the terminology I am using and the tags below are probably not the best. If this is the case, I apprecaite any convenient edit of the question. Thanks!
bash shell-script
asked Jun 6 at 8:43
Pedro
1113
1113
To try to restrict the number of possible ways of opening the file, would you want to do this only when a particular user opens the file for editing (writing), e.g. if someone didsudo vim /etc/hosts
? What is the underlying issue that you are wanting to solve?
â Kusalananda
Jun 6 at 8:56
@Kusalananda I am the only user. Hence, sudo vim /etc/hosts should not be an exception. Neither should be when replacing vim by any other text editor, nor commands like xdg-open. I am trying to avoid procrastination with sites such as Youtube. I can block it via this file. But if I can undo the change any time, it is not much of a help. For this reason I am looking for a system that requires a large amount of effort to change the file back, so that I only do it when it really is necessary. And ideally this effort would be productive, e.g. forcing me to write some tex file or reading some pdf.
â Pedro
Jun 6 at 9:04
If at all possible. Hand over administration of the system to another trusted human being and get them to change the root password and restrict yoursudo
rights.
â Kusalananda
Jun 6 at 9:14
2
If you've already blocked the sites and now want to stop yourself from unblocking them, I think we've reached the limits of the technical problem and are now in the realms of the human problem :) If your urge to procrastinate is so high you'll go to the trouble of unblocking the site, then you really need to find a non-technical solution. Anything you can do, you can also undo.
â terdonâ¦
Jun 6 at 9:21
2
Only if you have the password to the router. And the outside connection has to be protected by the cabinet too, so that you can't just plug in a bypass ethernet cable.
â Kusalananda
Jun 6 at 9:31
 |Â
show 4 more comments
To try to restrict the number of possible ways of opening the file, would you want to do this only when a particular user opens the file for editing (writing), e.g. if someone didsudo vim /etc/hosts
? What is the underlying issue that you are wanting to solve?
â Kusalananda
Jun 6 at 8:56
@Kusalananda I am the only user. Hence, sudo vim /etc/hosts should not be an exception. Neither should be when replacing vim by any other text editor, nor commands like xdg-open. I am trying to avoid procrastination with sites such as Youtube. I can block it via this file. But if I can undo the change any time, it is not much of a help. For this reason I am looking for a system that requires a large amount of effort to change the file back, so that I only do it when it really is necessary. And ideally this effort would be productive, e.g. forcing me to write some tex file or reading some pdf.
â Pedro
Jun 6 at 9:04
If at all possible. Hand over administration of the system to another trusted human being and get them to change the root password and restrict yoursudo
rights.
â Kusalananda
Jun 6 at 9:14
2
If you've already blocked the sites and now want to stop yourself from unblocking them, I think we've reached the limits of the technical problem and are now in the realms of the human problem :) If your urge to procrastinate is so high you'll go to the trouble of unblocking the site, then you really need to find a non-technical solution. Anything you can do, you can also undo.
â terdonâ¦
Jun 6 at 9:21
2
Only if you have the password to the router. And the outside connection has to be protected by the cabinet too, so that you can't just plug in a bypass ethernet cable.
â Kusalananda
Jun 6 at 9:31
To try to restrict the number of possible ways of opening the file, would you want to do this only when a particular user opens the file for editing (writing), e.g. if someone did
sudo vim /etc/hosts
? What is the underlying issue that you are wanting to solve?â Kusalananda
Jun 6 at 8:56
To try to restrict the number of possible ways of opening the file, would you want to do this only when a particular user opens the file for editing (writing), e.g. if someone did
sudo vim /etc/hosts
? What is the underlying issue that you are wanting to solve?â Kusalananda
Jun 6 at 8:56
@Kusalananda I am the only user. Hence, sudo vim /etc/hosts should not be an exception. Neither should be when replacing vim by any other text editor, nor commands like xdg-open. I am trying to avoid procrastination with sites such as Youtube. I can block it via this file. But if I can undo the change any time, it is not much of a help. For this reason I am looking for a system that requires a large amount of effort to change the file back, so that I only do it when it really is necessary. And ideally this effort would be productive, e.g. forcing me to write some tex file or reading some pdf.
â Pedro
Jun 6 at 9:04
@Kusalananda I am the only user. Hence, sudo vim /etc/hosts should not be an exception. Neither should be when replacing vim by any other text editor, nor commands like xdg-open. I am trying to avoid procrastination with sites such as Youtube. I can block it via this file. But if I can undo the change any time, it is not much of a help. For this reason I am looking for a system that requires a large amount of effort to change the file back, so that I only do it when it really is necessary. And ideally this effort would be productive, e.g. forcing me to write some tex file or reading some pdf.
â Pedro
Jun 6 at 9:04
If at all possible. Hand over administration of the system to another trusted human being and get them to change the root password and restrict your
sudo
rights.â Kusalananda
Jun 6 at 9:14
If at all possible. Hand over administration of the system to another trusted human being and get them to change the root password and restrict your
sudo
rights.â Kusalananda
Jun 6 at 9:14
2
2
If you've already blocked the sites and now want to stop yourself from unblocking them, I think we've reached the limits of the technical problem and are now in the realms of the human problem :) If your urge to procrastinate is so high you'll go to the trouble of unblocking the site, then you really need to find a non-technical solution. Anything you can do, you can also undo.
â terdonâ¦
Jun 6 at 9:21
If you've already blocked the sites and now want to stop yourself from unblocking them, I think we've reached the limits of the technical problem and are now in the realms of the human problem :) If your urge to procrastinate is so high you'll go to the trouble of unblocking the site, then you really need to find a non-technical solution. Anything you can do, you can also undo.
â terdonâ¦
Jun 6 at 9:21
2
2
Only if you have the password to the router. And the outside connection has to be protected by the cabinet too, so that you can't just plug in a bypass ethernet cable.
â Kusalananda
Jun 6 at 9:31
Only if you have the password to the router. And the outside connection has to be protected by the cabinet too, so that you can't just plug in a bypass ethernet cable.
â Kusalananda
Jun 6 at 9:31
 |Â
show 4 more comments
1 Answer
1
active
oldest
votes
up vote
0
down vote
accepted
To stop yourself, as root, to undo the blocking of a website, you will have to give up control of the blocking and unblocking process and involve another human being.
The radical solution would be to just give up root privileges on the machine to some other trusted human, and at least to severely restrict the available operations that you can do through sudo
. On a Unix system, virtually all software can be installed in one's home directory, if one's willing to put one's mind to it.
The other solution is to move the actual blocking process from the machine entirely, and let that be handled by a separate piece of equipment, like a locked-away router. Note that the router would also need to block tunneling through SSH, and other creative ways of connecting through other machines.
The protection of the router's configuration and physical access would also include protection of the external network outlet as to not allow you to tamper with the blocking by unplugging the router and bypassing it with an ethernet cable.
The key for accessing the router, and the router's admin password, would not be in your possession.
There might also be something one could do with virtual machines or containers (or possibly even just a chroot), so that the external connection would be protected by "another system" (the host machine) which you have no easy access to, while you work on the virtual machine or in the container.
I believe this is the limit to the technical solutions to your issue. As such, they are not limited to Unix systems. The next step would be to work with personal behaviour in other ways, such as through changing the way you work (always be visible by someone who cares), or seek outside help from a behaviour therapist or similar.
add a comment |Â
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
accepted
To stop yourself, as root, to undo the blocking of a website, you will have to give up control of the blocking and unblocking process and involve another human being.
The radical solution would be to just give up root privileges on the machine to some other trusted human, and at least to severely restrict the available operations that you can do through sudo
. On a Unix system, virtually all software can be installed in one's home directory, if one's willing to put one's mind to it.
The other solution is to move the actual blocking process from the machine entirely, and let that be handled by a separate piece of equipment, like a locked-away router. Note that the router would also need to block tunneling through SSH, and other creative ways of connecting through other machines.
The protection of the router's configuration and physical access would also include protection of the external network outlet as to not allow you to tamper with the blocking by unplugging the router and bypassing it with an ethernet cable.
The key for accessing the router, and the router's admin password, would not be in your possession.
There might also be something one could do with virtual machines or containers (or possibly even just a chroot), so that the external connection would be protected by "another system" (the host machine) which you have no easy access to, while you work on the virtual machine or in the container.
I believe this is the limit to the technical solutions to your issue. As such, they are not limited to Unix systems. The next step would be to work with personal behaviour in other ways, such as through changing the way you work (always be visible by someone who cares), or seek outside help from a behaviour therapist or similar.
add a comment |Â
up vote
0
down vote
accepted
To stop yourself, as root, to undo the blocking of a website, you will have to give up control of the blocking and unblocking process and involve another human being.
The radical solution would be to just give up root privileges on the machine to some other trusted human, and at least to severely restrict the available operations that you can do through sudo
. On a Unix system, virtually all software can be installed in one's home directory, if one's willing to put one's mind to it.
The other solution is to move the actual blocking process from the machine entirely, and let that be handled by a separate piece of equipment, like a locked-away router. Note that the router would also need to block tunneling through SSH, and other creative ways of connecting through other machines.
The protection of the router's configuration and physical access would also include protection of the external network outlet as to not allow you to tamper with the blocking by unplugging the router and bypassing it with an ethernet cable.
The key for accessing the router, and the router's admin password, would not be in your possession.
There might also be something one could do with virtual machines or containers (or possibly even just a chroot), so that the external connection would be protected by "another system" (the host machine) which you have no easy access to, while you work on the virtual machine or in the container.
I believe this is the limit to the technical solutions to your issue. As such, they are not limited to Unix systems. The next step would be to work with personal behaviour in other ways, such as through changing the way you work (always be visible by someone who cares), or seek outside help from a behaviour therapist or similar.
add a comment |Â
up vote
0
down vote
accepted
up vote
0
down vote
accepted
To stop yourself, as root, to undo the blocking of a website, you will have to give up control of the blocking and unblocking process and involve another human being.
The radical solution would be to just give up root privileges on the machine to some other trusted human, and at least to severely restrict the available operations that you can do through sudo
. On a Unix system, virtually all software can be installed in one's home directory, if one's willing to put one's mind to it.
The other solution is to move the actual blocking process from the machine entirely, and let that be handled by a separate piece of equipment, like a locked-away router. Note that the router would also need to block tunneling through SSH, and other creative ways of connecting through other machines.
The protection of the router's configuration and physical access would also include protection of the external network outlet as to not allow you to tamper with the blocking by unplugging the router and bypassing it with an ethernet cable.
The key for accessing the router, and the router's admin password, would not be in your possession.
There might also be something one could do with virtual machines or containers (or possibly even just a chroot), so that the external connection would be protected by "another system" (the host machine) which you have no easy access to, while you work on the virtual machine or in the container.
I believe this is the limit to the technical solutions to your issue. As such, they are not limited to Unix systems. The next step would be to work with personal behaviour in other ways, such as through changing the way you work (always be visible by someone who cares), or seek outside help from a behaviour therapist or similar.
To stop yourself, as root, to undo the blocking of a website, you will have to give up control of the blocking and unblocking process and involve another human being.
The radical solution would be to just give up root privileges on the machine to some other trusted human, and at least to severely restrict the available operations that you can do through sudo
. On a Unix system, virtually all software can be installed in one's home directory, if one's willing to put one's mind to it.
The other solution is to move the actual blocking process from the machine entirely, and let that be handled by a separate piece of equipment, like a locked-away router. Note that the router would also need to block tunneling through SSH, and other creative ways of connecting through other machines.
The protection of the router's configuration and physical access would also include protection of the external network outlet as to not allow you to tamper with the blocking by unplugging the router and bypassing it with an ethernet cable.
The key for accessing the router, and the router's admin password, would not be in your possession.
There might also be something one could do with virtual machines or containers (or possibly even just a chroot), so that the external connection would be protected by "another system" (the host machine) which you have no easy access to, while you work on the virtual machine or in the container.
I believe this is the limit to the technical solutions to your issue. As such, they are not limited to Unix systems. The next step would be to work with personal behaviour in other ways, such as through changing the way you work (always be visible by someone who cares), or seek outside help from a behaviour therapist or similar.
edited Jun 6 at 10:07
answered Jun 6 at 9:46
Kusalananda
101k13199313
101k13199313
add a comment |Â
add a comment |Â
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f448129%2frun-process-before-opening-file%23new-answer', 'question_page');
);
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
To try to restrict the number of possible ways of opening the file, would you want to do this only when a particular user opens the file for editing (writing), e.g. if someone did
sudo vim /etc/hosts
? What is the underlying issue that you are wanting to solve?â Kusalananda
Jun 6 at 8:56
@Kusalananda I am the only user. Hence, sudo vim /etc/hosts should not be an exception. Neither should be when replacing vim by any other text editor, nor commands like xdg-open. I am trying to avoid procrastination with sites such as Youtube. I can block it via this file. But if I can undo the change any time, it is not much of a help. For this reason I am looking for a system that requires a large amount of effort to change the file back, so that I only do it when it really is necessary. And ideally this effort would be productive, e.g. forcing me to write some tex file or reading some pdf.
â Pedro
Jun 6 at 9:04
If at all possible. Hand over administration of the system to another trusted human being and get them to change the root password and restrict your
sudo
rights.â Kusalananda
Jun 6 at 9:14
2
If you've already blocked the sites and now want to stop yourself from unblocking them, I think we've reached the limits of the technical problem and are now in the realms of the human problem :) If your urge to procrastinate is so high you'll go to the trouble of unblocking the site, then you really need to find a non-technical solution. Anything you can do, you can also undo.
â terdonâ¦
Jun 6 at 9:21
2
Only if you have the password to the router. And the outside connection has to be protected by the cabinet too, so that you can't just plug in a bypass ethernet cable.
â Kusalananda
Jun 6 at 9:31